Sha256: 00e9b4107f5a73733340329ebc825feaea8d6c24bd7ffc10d899cf0d40739c14

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

require 'spec_helper'

describe "Masgn" do
  describe "with a single lhs splat" do
    it "returns a s(:masgn)" do
      opal_parse('*a = 1, 2').first.should == :masgn
      opal_parse('* = 1, 2').first.should == :masgn
    end

    it "wraps splat inside a s(:array)" do
      opal_parse('*a = 1, 2')[1].should == [:array, [:splat, [:lasgn, :a]]]
      opal_parse('* = 1, 2')[1].should == [:array, [:splat]]
    end
  end

  describe "with more than 1 lhs item" do
    it "returns a s(:masgn) " do
      opal_parse('a, b = 1, 2').first.should == :masgn
    end

    it "collects all lhs args into an s(:array)" do
      opal_parse('a, b = 1, 2')[1].should == [:array, [:lasgn, :a], [:lasgn, :b]]
      opal_parse('@a, @b = 1, 2')[1].should == [:array, [:iasgn, :@a], [:iasgn, :@b]]
    end

    it "supports splat parts" do
      opal_parse('a, *b = 1, 2')[1].should == [:array, [:lasgn, :a], [:splat, [:lasgn, :b]]]
      opal_parse('@a, * = 1, 2')[1].should == [:array, [:iasgn, :@a], [:splat]]
    end
  end

  describe "with a single rhs argument" do
    it "should wrap rhs in an s(:to_ary)" do
      opal_parse('a, b = 1')[2].should == [:to_ary, [:int, 1]]
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
opal-0.5.5 spec/opal/parser/masgn_spec.rb
opal-0.5.4 spec/opal/parser/masgn_spec.rb
opal-0.5.2 spec/opal/parser/masgn_spec.rb
opal-0.5.0 spec/opal/parser/masgn_spec.rb
opal-0.4.4 spec/parser/masgn_spec.rb