Class: Prism::DesugarAndWriteNode
Do not use. This class is for internal use only.
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Instance Chain:
self,
DSL
|
|
| Inherits: | Object |
| Defined in: | lib/prism/desugar_compiler.rb |
Class Method Summary
-
.new(node, default_source, read_class, write_class, **arguments) ⇒ DesugarAndWriteNode
constructor
: ((ClassVariableAndWriteNode |
ConstantAndWriteNode|GlobalVariableAndWriteNode|InstanceVariableAndWriteNode|LocalVariableAndWriteNode) node,Sourcedefault_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void.
Instance Attribute Summary
-
#arguments
readonly
: Hash[Symbol, untyped].
-
#default_source
readonly
:
Source. - #node readonly
-
#read_class
readonly
: Symbol.
-
#write_class
readonly
: Symbol.
Instance Method Summary
-
#compile
Desugar
x &&= ytox && x = y.
Constructor Details
.new(node, default_source, read_class, write_class, **arguments) ⇒ DesugarAndWriteNode
: ((ClassVariableAndWriteNode | ConstantAndWriteNode | GlobalVariableAndWriteNode | InstanceVariableAndWriteNode | LocalVariableAndWriteNode) node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
# File 'lib/prism/desugar_compiler.rb', line 16
def initialize(node, default_source, read_class, write_class, **arguments) @node = node @default_source = default_source @read_class = read_class @write_class = write_class @arguments = arguments end
Instance Attribute Details
#arguments (readonly)
: Hash[Symbol, untyped]
# File 'lib/prism/desugar_compiler.rb', line 13
attr_reader :arguments #: Hash[Symbol, untyped]
#default_source (readonly)
: Source
# File 'lib/prism/desugar_compiler.rb', line 11
attr_reader :default_source #: Source
#node (readonly)
# File 'lib/prism/desugar_compiler.rb', line 10
attr_reader :node #: ClassVariableAndWriteNode | ConstantAndWriteNode | GlobalVariableAndWriteNode | InstanceVariableAndWriteNode | LocalVariableAndWriteNode
#read_class (readonly)
: Symbol
# File 'lib/prism/desugar_compiler.rb', line 12
attr_reader :read_class, :write_class #: Symbol
#write_class (readonly)
: Symbol
# File 'lib/prism/desugar_compiler.rb', line 12
attr_reader :read_class, :write_class #: Symbol
Instance Method Details
#compile
Desugar x &&= y to x && x = y
# File 'lib/prism/desugar_compiler.rb', line 27
def compile and_node( location: node.location, left: public_send(read_class, location: node.name_loc, **arguments), right: public_send( write_class, location: node.location, **arguments, name_loc: node.name_loc, value: node.value, operator_loc: node.operator_loc ), operator_loc: node.operator_loc ) end