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,java.lang.Cloneable
- Direct Known Subclasses:
TypeNode.AnyTypeNode,TypeNode.NonNullTypeAliasTypeNode,TypeNode.NullableTypeNode,TypeNode.TypeVariableNode,TypeNode.UnionTypeNode,TypeNode.UnknownTypeNode
- Enclosing class:
- TypeNode
public abstract static class TypeNode.WriteFrameSlotTypeNode extends 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.WriteFrameSlotTypeNode
-
-
Field Summary
Fields Modifier and Type Field Description protected intslot-
Fields inherited from class org.pkl.core.ast.PklNode
sourceSection
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedWriteFrameSlotTypeNode(com.oracle.truffle.api.source.SourceSection sourceSection)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidexecuteAndSet(com.oracle.truffle.api.frame.VirtualFrame frame, java.lang.Object value)Checks if `value` conforms to this type.com.oracle.truffle.api.frame.FrameSlotKindgetFrameSlotKind()TypeNodeinitWriteSlotNode(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, typeMismatch
-
Methods inherited from class org.pkl.core.ast.PklNode
exceptionBuilder, getShortName, getSourceSection, toString
-
Methods 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
-
-
-
-
Method Detail
-
getFrameSlotKind
public final com.oracle.truffle.api.frame.FrameSlotKind getFrameSlotKind()
- Specified by:
getFrameSlotKindin classTypeNode
-
initWriteSlotNode
public TypeNode initWriteSlotNode(int slot)
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
public final void executeAndSet(com.oracle.truffle.api.frame.VirtualFrame frame, java.lang.Object value)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
-
-