Package org.pkl.core.ast.type
Class TypeNode.WriteFrameSlotTypeNode
java.lang.Object
com.oracle.truffle.api.nodes.Node
org.pkl.core.ast.PklNode
org.pkl.core.ast.type.TypeNode
org.pkl.core.ast.type.TypeNode.WriteFrameSlotTypeNode
- All Implemented Interfaces:
com.oracle.truffle.api.nodes.NodeInterface,Cloneable
- Direct Known Subclasses:
TypeNode.AnyTypeNode,TypeNode.NonNullTypeAliasTypeNode,TypeNode.NullableTypeNode,TypeNode.TypeVariableNode,TypeNode.UnionTypeNode,TypeNode.UnknownTypeNode
- Enclosing class:
- TypeNode
Base class for types whose `executeAndSet` method assigns values to slots with a
`WriteFrameSlotNode`.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.pkl.core.ast.type.TypeNode
TypeNode.AnyTypeNode, TypeNode.BooleanTypeNode, TypeNode.CollectionTypeNode, TypeNode.ConstrainedTypeNode, TypeNode.DynamicTypeNode, TypeNode.FinalClassTypeNode, TypeNode.FinalModuleTypeNode, TypeNode.FloatTypeNode, TypeNode.FrameSlotTypeNode, TypeNode.FunctionClassTypeNode, TypeNode.FunctionNClassTypeNode, TypeNode.FunctionTypeNode, TypeNode.Int16TypeAliasTypeNode, TypeNode.Int32TypeAliasTypeNode, TypeNode.Int8TypeAliasTypeNode, TypeNode.IntSlotTypeNode, TypeNode.IntTypeNode, TypeNode.ListingOrMappingTypeNode, TypeNode.ListingTypeNode, TypeNode.ListTypeNode, TypeNode.MappingTypeNode, TypeNode.MapTypeNode, TypeNode.NonFinalClassTypeNode, TypeNode.NonFinalModuleTypeNode, TypeNode.NonNullTypeAliasTypeNode, TypeNode.NothingTypeNode, TypeNode.NullableTypeNode, TypeNode.NumberTypeNode, TypeNode.ObjectSlotTypeNode, TypeNode.PairTypeNode, TypeNode.SetTypeNode, TypeNode.StringLiteralTypeNode, TypeNode.StringTypeNode, TypeNode.TypeAliasTypeNode, TypeNode.TypedTypeNode, TypeNode.TypeVariableNode, TypeNode.UIntTypeAliasTypeNode, TypeNode.UnionOfStringLiteralsTypeNode, TypeNode.UnionTypeNode, TypeNode.UnknownTypeNode, TypeNode.VarArgsTypeNode, TypeNode.WriteFrameSlotTypeNodeNested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.nodes.Node.Child, com.oracle.truffle.api.nodes.Node.Children -
Field Summary
FieldsFields inherited from class org.pkl.core.ast.PklNode
sourceSection -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedWriteFrameSlotTypeNode(com.oracle.truffle.api.source.SourceSection sourceSection) -
Method Summary
Modifier and TypeMethodDescriptionfinal voidexecuteAndSet(com.oracle.truffle.api.frame.VirtualFrame frame, Object value) Checks if `value` conforms to this type.final com.oracle.truffle.api.frame.FrameSlotKindinitWriteSlotNode(int slot) Initializes this node's frame slot.Methods inherited from class org.pkl.core.ast.type.TypeNode
createDefaultValue, doExport, execute, export, forClass, getMirror, getMirror, getMirrors, getTypeArgumentMirrors, getVmClass, getVmTypeAlias, isNoopTypeCheck, typeMismatchMethods inherited from class org.pkl.core.ast.PklNode
exceptionBuilder, getShortName, getSourceSection, toStringMethods inherited from class com.oracle.truffle.api.nodes.Node
accept, adoptChildren, atomic, atomic, copy, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, onReplace, replace, replace, reportPolymorphicSpecialize
-
Field Details
-
slot
protected int slot
-
-
Constructor Details
-
WriteFrameSlotTypeNode
protected WriteFrameSlotTypeNode(com.oracle.truffle.api.source.SourceSection sourceSection)
-
-
Method Details
-
getFrameSlotKind
public final com.oracle.truffle.api.frame.FrameSlotKind getFrameSlotKind()- Specified by:
getFrameSlotKindin classTypeNode
-
initWriteSlotNode
Description copied from class:TypeNodeInitializes this node's frame slot. Called if this node is a function/method parameter type. Kept separate from constructor so thatTypeNode.TypeAliasTypeNodecan initialize frame slot of its cloned child node.- Specified by:
initWriteSlotNodein classTypeNode
-
executeAndSet
Description copied from class:TypeNodeChecks if `value` conforms to this type. If so, sets `slot` to `value`. Otherwise, throws a `VmTypeMismatchException`.- Specified by:
executeAndSetin classTypeNode
-