Class IRConstruct
- All Implemented Interfaces:
INode
In the case of functions there is a single 'call' method, this has all the parameters that would be supplied when other constructs use the function.
So this is more like a Function in Java - that is really just an object. The reason for this is that in EK9 it is possible for functions to 'capture' variables as properties (dynamic functions). But this whole mechanism makes sense even for normal fixed named functions. It also means it is very easy to pass functions around as data.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaccept(INodeVisitor visitor) voidadd(OperationInstr operation) voidReturns the normalized source file name for JVM debug information.Returns signature-qualified name including parameter types and return type.Returns the source file name where this construct was defined.booleanisForSymbol(ISymbol toCheck) booleanAssess if this construct is a function or a general aggregate symbol type.booleanvoidsetProgramEntryPoint(ProgramEntryPointInstr programEntryPoint) toString()
-
Constructor Details
-
IRConstruct
-
-
Method Details
-
isForSymbol
-
getFullyQualifiedName
-
getSourceFileName
Returns the source file name where this construct was defined. This is used for JVM debug information (SourceFile attribute) to enable debuggers to map bytecode back to the original .ek9 source file.- Returns:
- Source file name, typically a relative path like "introduction/HelloWorld.ek9"
-
getNormalizedSourceFileName
Returns the normalized source file name for JVM debug information. Strips the "./" prefix if present, as jdb and other debuggers interpret "./" literally and fail to find source files like "./workarea.ek9".This normalized form is required for: - JVM SourceFile attribute in .class files - JSR-45 SMAP (Source Map) generation - Debugger source file resolution (jdb, IDE debuggers)
- Returns:
- Normalized source file name without "./" prefix (e.g., "workarea.ek9" instead of "./workarea.ek9")
-
getSignatureQualifiedName
Returns signature-qualified name including parameter types and return type. For functions and methods, this includes the complete signature to enable method overloading resolution and target code generation.Format: "module::construct(org.ek9.lang::ParamType1,org.ek9.lang::ParamType2)->org.ek9.lang::ReturnType"
- Returns:
- Signature-qualified name for overload resolution.
-
isFunction
public boolean isFunction()Assess if this construct is a function or a general aggregate symbol type.- Returns:
- true if the construct is just a function - otherwise false and it is an aggregate.
-
isProgram
public boolean isProgram() -
addField
-
add
-
getSymbol
-
getFields
-
getOperations
-
setProgramEntryPoint
-
getProgramEntryPoint
-
accept
-
toString
-