Sha256: db9b66f64fb350145593ad22714544aa404c2ca1745d896208d401254921de5d

Contents?: true

Size: 811 Bytes

Versions: 4

Compression:

Stored size: 811 Bytes

Contents

# frozen_string_literal: true

module Phlex::Compiler::Visitors
	class Statements < Base
		MUTATING_METHODS = [:raw, :whitespace, :comment, :text, :doctype]

		include StableScope

		def mutating?
			!!@mutating
		end

		visit_method def visit_vcall(node)
			check Phlex::Compiler::Nodes::VCall.new(node)
		end

		visit_method def visit_fcall(node)
			check Phlex::Compiler::Nodes::FCall.new(node)
		end

		visit_method def visit_command(node)
			check Phlex::Compiler::Nodes::Command.new(node)
		end

		visit_method def visit_method_add_block(node)
			check Phlex::Compiler::Nodes::MethodAddBlock.new(node)
		end

		private

		def check(node)
			@mutating = true if @compiler.tag_method?(node.name)
			@mutating = true if MUTATING_METHODS.include?(node.name) && !@compiler.redefined?(node.name)
		end
	end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
phlex-0.5.3 lib/phlex/compiler/visitors/statements.rb
phlex-0.5.2 lib/phlex/compiler/visitors/statements.rb
phlex-0.5.1 lib/phlex/compiler/visitors/statements.rb
phlex-0.5.0 lib/phlex/compiler/visitors/statements.rb