define method
void
define({})
Defines a new macro in the system.
This method creates either an object-like or function-like macro based on whether parameters are provided.
Parameters:
name
- The identifier for the macroparameters
- Optional list of parameter names for function-like macrosreplacement
- The text/code that replaces the macrolocation
- Source location for error reporting
Throws MacroDefinitionException if the macro name is invalid.
Implementation
void define({
required String name,
List<String> parameters = const [],
required String replacement,
required Location location,
}) {
// Validate macro name
if (!_isValidMacroName(name)) {
throw MacroDefinitionException(
'Invalid macro name: $name',
location,
);
}
// Create appropriate macro type
final macro = parameters.isEmpty
? MacroDefinition.object(
name: name,
replacement: replacement,
location: location,
)
: MacroDefinition.function(
name: name,
parameters: parameters,
replacement: replacement,
location: location,
);
_macros[name] = macro;
}