Class ToStringGenerator
java.lang.Object
org.ek9lang.compiler.phase7.synthesis.AbstractSyntheticGenerator
org.ek9lang.compiler.phase7.synthesis.ToStringGenerator
Generates synthetic IR for the _string ($) operator.
The generated code follows this pattern:
String _string():
// Guard: if object is unset, return UNSET
if !this._isSet() -> return unset String
result = "ClassName("
needsSeparator = false
// For each field:
if field._isSet():
if needsSeparator:
result = result + ", "
result = result + "fieldName="
result = result + field.$()
needsSeparator = true
else:
if needsSeparator:
result = result + ", "
result = result + "fieldName=?"
needsSeparator = true
result = result + ")"
return result
Key semantic requirements:
- Returns UNSET String if this._isSet() is false (empty objects have no string representation)
- Format: "ClassName(field1=value1, field2=value2)"
- SET fields show their string value via $
- UNSET fields show "?" as placeholder
- Uses simple class name (not fully qualified)
The ? guard ensures consistency: operations on empty objects propagate uncertainty.
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractSyntheticGenerator
AbstractSyntheticGenerator.ScopeSetup -
Field Summary
Fields inherited from class AbstractSyntheticGenerator
stackContext -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongenerate(MethodSymbol operatorSymbol, AggregateSymbol aggregateSymbol) Generate the _string operator IR for the given aggregate.Methods inherited from class AbstractSyntheticGenerator
aggregateHasOperator, createDebugInfo, createSynthesisScope, generateAnyFieldSetGuard, generateBinaryOperatorGuards, generateBooleanBranch, generateBooleanReturnBlock, generateConstructorCall, generateConstructorCall, generateConstructorCall, generateConstructorCallWithArgs, generateFieldLoad, generateFieldLoad, generateFieldSetStatusCheck, generateIsSetGuard, generateIsSetGuard, generateLabelName, generateMethodCall, generateMethodCall, generateMethodCall, generateMethodCall, generateMethodCall, generateResultReturnBlock, generateResultReturnBlock, generateStringLiteralLoad, generateTempName, generateThisIsSetGuard, generateThisIsSetGuard, generateUnsetReturnBlock, generateUnsetReturnBlockWithLabel, generateUnsetReturnBlockWithLabel, getBitsTypeName, getBooleanTypeName, getIntegerTypeName, getReturnBlockHelper, getStringTypeName, getSuperTypeName, getSyntheticFields, getTypeName, getVoidTypeName, initializeScope, isAnyType, superHasOperator
-
Constructor Details
-
ToStringGenerator
ToStringGenerator(IRGenerationContext stackContext)
-
-
Method Details
-
generate
Generate the _string operator IR for the given aggregate.- Parameters:
operatorSymbol- The _string operator symbolaggregateSymbol- The aggregate containing the operator- Returns:
- List of IR instructions implementing the operator
-