apricot 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +1 -0
  5. data/Gemfile.lock +229 -11
  6. data/README.md +46 -29
  7. data/Rakefile +1 -1
  8. data/apricot.gemspec +7 -3
  9. data/benchmarks/factorial.rb +51 -0
  10. data/benchmarks/interpolate.rb +20 -0
  11. data/bin/apricot +5 -23
  12. data/examples/bot.apr +1 -4
  13. data/examples/cinch-bot.apr +3 -3
  14. data/examples/sinatra.apr +9 -0
  15. data/kernel/core.apr +124 -75
  16. data/kernel/repl.apr +37 -0
  17. data/lib/apricot.rb +7 -26
  18. data/lib/apricot/boot.rb +24 -0
  19. data/lib/apricot/code_loader.rb +108 -0
  20. data/lib/apricot/compiler.rb +265 -32
  21. data/lib/apricot/generator.rb +10 -3
  22. data/lib/apricot/identifier.rb +25 -10
  23. data/lib/apricot/list.rb +28 -41
  24. data/lib/apricot/macroexpand.rb +14 -8
  25. data/lib/apricot/misc.rb +2 -1
  26. data/lib/apricot/namespace.rb +20 -3
  27. data/lib/apricot/{parser.rb → reader.rb} +221 -194
  28. data/lib/apricot/repl.rb +67 -24
  29. data/lib/apricot/ruby_ext.rb +27 -16
  30. data/lib/apricot/scopes.rb +159 -0
  31. data/lib/apricot/seq.rb +43 -1
  32. data/lib/apricot/special_forms.rb +16 -695
  33. data/lib/apricot/special_forms/def.rb +32 -0
  34. data/lib/apricot/special_forms/do.rb +23 -0
  35. data/lib/apricot/special_forms/dot.rb +112 -0
  36. data/lib/apricot/special_forms/fn.rb +342 -0
  37. data/lib/apricot/special_forms/if.rb +31 -0
  38. data/lib/apricot/special_forms/let.rb +8 -0
  39. data/lib/apricot/special_forms/loop.rb +10 -0
  40. data/lib/apricot/special_forms/quote.rb +9 -0
  41. data/lib/apricot/special_forms/recur.rb +26 -0
  42. data/lib/apricot/special_forms/try.rb +146 -0
  43. data/lib/apricot/variables.rb +65 -0
  44. data/lib/apricot/version.rb +1 -1
  45. data/spec/compiler_spec.rb +53 -450
  46. data/spec/fn_spec.rb +206 -0
  47. data/spec/list_spec.rb +1 -1
  48. data/spec/reader_spec.rb +349 -0
  49. data/spec/spec_helper.rb +40 -4
  50. data/spec/special_forms_spec.rb +203 -0
  51. metadata +99 -133
  52. data/lib/apricot/ast.rb +0 -3
  53. data/lib/apricot/ast/identifier.rb +0 -111
  54. data/lib/apricot/ast/list.rb +0 -99
  55. data/lib/apricot/ast/literals.rb +0 -240
  56. data/lib/apricot/ast/node.rb +0 -45
  57. data/lib/apricot/ast/scopes.rb +0 -147
  58. data/lib/apricot/ast/toplevel.rb +0 -66
  59. data/lib/apricot/ast/variables.rb +0 -64
  60. data/lib/apricot/printers.rb +0 -12
  61. data/lib/apricot/stages.rb +0 -60
  62. data/spec/parser_spec.rb +0 -312
@@ -1,10 +1,46 @@
1
1
  require 'bundler/setup'
2
2
  require 'rspec'
3
3
 
4
- unless Rubinius.ruby19?
5
- puts "Error: Apricot must be run in Ruby 1.9 mode"
6
- exit 1
7
- end
4
+ # require 'simplecov'
5
+
6
+ # SimpleCov.configure do
7
+ # add_filter 'spec/'
8
+ # add_filter 'kernel/' # SimpleCov doesn't understand Apricot code
9
+
10
+ # add_group 'Compiler' do |src|
11
+ # ['code_loader.rb',
12
+ # 'compiler.rb',
13
+ # 'errors.rb',
14
+ # 'generator.rb',
15
+ # 'scopes.rb',
16
+ # 'variables.rb',
17
+ # 'reader.rb'].any? {|f| src.filename.end_with? "apricot/#{f}" }
18
+ # end
19
+ # add_group 'Special Forms', 'special_forms'
20
+ # add_group 'Runtime' do |src|
21
+ # ['boot.rb',
22
+ # 'cons.rb',
23
+ # 'identifier.rb',
24
+ # 'list.rb',
25
+ # 'macroexpand.rb',
26
+ # 'misc.rb',
27
+ # 'namespace.rb',
28
+ # 'ruby_ext.rb',
29
+ # 'seq.rb'].any? {|f| src.filename.end_with? "apricot/#{f}" }
30
+ # end
31
+ # end
32
+ # SimpleCov.start unless ENV['TRAVIS']
8
33
 
9
34
  require 'apricot'
10
35
  include Apricot
36
+
37
+ # Common spec helper functions
38
+ module CompilerSpec
39
+ def apr(code)
40
+ Apricot::Compiler.eval code
41
+ end
42
+
43
+ def bad_apr(code)
44
+ expect { apr(code) }.to raise_error(CompileError)
45
+ end
46
+ end
@@ -0,0 +1,203 @@
1
+ describe 'Apricot' do
2
+ include CompilerSpec
3
+
4
+ it 'compiles def forms' do
5
+ apr('(def A 1)')
6
+ A.should == 1
7
+
8
+ B = Module.new
9
+ apr('(def B::C 1)')
10
+ B::C.should == 1
11
+
12
+ apr('(def a 1)')
13
+ Apricot.current_namespace.get_var(:a).should == 1
14
+ end
15
+
16
+ it 'does not compile invalid def forms' do
17
+ bad_apr '(def)'
18
+ bad_apr '(def A 1 2)'
19
+ bad_apr '(def 1 2)'
20
+ bad_apr '(def self 1)'
21
+ end
22
+
23
+ it 'compiles do forms' do
24
+ apr('(do)').should == nil
25
+ apr('(do 1 2 3)').should == 3
26
+ end
27
+
28
+ it 'compiles send forms' do
29
+ apr('(. 1 class)').should == Fixnum
30
+ apr('(. 1 (class))').should == Fixnum
31
+ apr('(. "foo" append "bar")').should == 'foobar'
32
+ apr('(. "foo" (append "bar"))').should == 'foobar'
33
+ end
34
+
35
+ it 'compiles send forms with block args' do
36
+ apr('(. [1] map | :to_s)').should == ['1']
37
+ apr('(. [1] (map | :to_s))').should == ['1']
38
+ apr('(. [1] map | #(. % to_s))').should == ['1']
39
+ end
40
+
41
+ it 'compiles send forms with splat args' do
42
+ apr('(. "foo bar baz" split & [" " 2])').should == ['foo', 'bar baz']
43
+ apr('(. "foo bar baz" (split & [" " 2]))').should == ['foo', 'bar baz']
44
+ end
45
+
46
+ it 'compiles new send forms' do
47
+ apr('(. Array new 3 1)').should == [1, 1, 1]
48
+ end
49
+
50
+ it 'does not compile invalid send forms' do
51
+ bad_apr '(.)'
52
+ bad_apr '(. 1)'
53
+ bad_apr '(. 1 ())'
54
+ bad_apr '(. 1 1)'
55
+ bad_apr '(. [1] map |)'
56
+ bad_apr '(. "" split &)'
57
+ end
58
+
59
+ it 'compiles shorthand send forms' do
60
+ apr('(.class 1)').should == Fixnum
61
+ apr('(.append "foo" "bar")').should == 'foobar'
62
+ end
63
+
64
+ it 'compiles shorthand send forms with block args' do
65
+ apr('(.map [1] | :to_s)').should == ['1']
66
+ apr('(.map [1] | #(.to_s %))').should == ['1']
67
+ end
68
+
69
+ it 'compiles shorthand send forms with splat args' do
70
+ apr('(.split "foo bar baz" & [" " 2])').should == ['foo', 'bar baz']
71
+ end
72
+
73
+ it 'macroexpands shorthand send forms' do
74
+ form = apr "'(.meth recv arg1 arg2)"
75
+ ex = Apricot.macroexpand(form)
76
+ ex.should == List[*[:'.', :recv, :meth, :arg1, :arg2].map {|x| Identifier.intern(x) }]
77
+ end
78
+
79
+ it 'compiles shorthand new send forms' do
80
+ apr('(Array. 3 1)').should == [1, 1, 1]
81
+ end
82
+
83
+ it 'compiles shorthand new send forms with block args' do
84
+ apr('(Array. 3 | :to_s)').should == ['0', '1', '2']
85
+ apr('(Array. 3 | #(.to_s %))').should == ['0', '1', '2']
86
+ end
87
+
88
+ it 'macroexpands shorthand new send forms' do
89
+ form = apr "'(Klass. arg1 arg2)"
90
+ ex = Apricot.macroexpand(form)
91
+ ex.should == List[*[:'.', :Klass, :new, :arg1, :arg2].map {|x| Identifier.intern(x) }]
92
+ end
93
+
94
+ it 'compiles if forms' do
95
+ apr('(if true 1 2)').should == 1
96
+ apr('(if false 1 2)').should == 2
97
+ apr('(if true 1)').should == 1
98
+ apr('(if false 1)').should == nil
99
+ end
100
+
101
+ it 'does not compile invalid if forms' do
102
+ bad_apr '(if)'
103
+ bad_apr '(if true)'
104
+ bad_apr '(if true 1 2 3)'
105
+ end
106
+
107
+ it 'compiles let forms' do
108
+ apr('(let [])').should == nil
109
+ apr('(let [] 1 2 3)').should == 3
110
+ apr('(let [a 1] a)').should == 1
111
+ apr('(let [a 1 b a] b)').should == 1
112
+ end
113
+
114
+ it 'compiles nested let forms' do
115
+ apr('(let [a 1] (let [a 2] a))').should == 2
116
+ apr('(let [a 1] (let [b 2] a))').should == 1
117
+ apr('(let [a 1] (let [a 2]) a)').should == 1
118
+ apr('(let [a 1] (let [b a] b))').should == 1
119
+ end
120
+
121
+ it 'does not compile invalid let forms' do
122
+ bad_apr '(let)'
123
+ bad_apr '(let 1)'
124
+ bad_apr '(let [a 1 b])'
125
+ bad_apr '(let [1 2])'
126
+ end
127
+
128
+ it 'compiles loop forms' do
129
+ apr('(loop [])').should == nil
130
+ apr('(loop [a 1] a)').should == 1
131
+ apr('(loop [a true] (if a (recur false) 1))').should == 1
132
+ end
133
+
134
+ it 'does not compile invalid loop forms' do
135
+ bad_apr '(loop)'
136
+ bad_apr '(loop 1)'
137
+ bad_apr '(loop [a 1 b])'
138
+ bad_apr '(loop [1 2])'
139
+ end
140
+
141
+ it 'compiles quote forms' do
142
+ apr('(quote quote)').should == Identifier.intern(:quote)
143
+ end
144
+
145
+ it 'does not compile invalid quote forms' do
146
+ bad_apr '(quote)'
147
+ bad_apr '(quote 1 2)'
148
+ end
149
+
150
+ it 'does not compile invalid recur forms' do
151
+ bad_apr '(recur)'
152
+ bad_apr '(loop [] (recur 1))'
153
+ bad_apr '(fn [[x 1]] (recur))'
154
+ bad_apr '(fn [x & y] (recur 1))'
155
+ bad_apr '(fn [x & y] (recur 1 2 3))'
156
+ end
157
+
158
+ it 'compiles try forms' do
159
+ apr('(try)').should == nil
160
+ apr('(try 1 2 3)').should == 3
161
+ apr('(try 1 (rescue e 2))').should == 1
162
+ apr('(try (Kernel/raise "") 1 (rescue e 2))').should == 2
163
+ apr('(try (Kernel/raise "") 1 (rescue [e] 2))').should == 2
164
+ apr('(try (Kernel/raise ArgumentError) 1 (rescue [e TypeError] 2) (rescue [e ArgumentError] 3) (rescue e 4))').should == 3
165
+ apr('(try (Kernel/raise "") 1 (rescue e e))').should be_a(RuntimeError)
166
+ expect { apr '(try (Kernel/raise ""))' }.to raise_error(RuntimeError)
167
+ expect { apr '(try (Kernel/raise ArgumentError) 1 (rescue [e TypeError] 2))' }.to raise_error(ArgumentError)
168
+ end
169
+
170
+ it 'compiles try forms with ensure clauses' do
171
+ apr(<<-CODE).should == []
172
+ (let [a [1]]
173
+ (try
174
+ 2
175
+ (ensure (. a pop)))
176
+ a)
177
+ CODE
178
+ apr(<<-CODE).should == []
179
+ (let [a [1]]
180
+ (try
181
+ (Kernel/raise "")
182
+ (rescue e 2)
183
+ (ensure (. a pop)))
184
+ a)
185
+ CODE
186
+ apr(<<-CODE).should == []
187
+ (let [a [1]]
188
+ (try
189
+ (try
190
+ (Kernel/raise "")
191
+ (ensure (. a pop)))
192
+ (rescue e 2))
193
+ a)
194
+ CODE
195
+ end
196
+
197
+ it 'does not compile invalid try forms' do
198
+ bad_apr '(try (ensure) 1)'
199
+ bad_apr '(try (rescue e e) 1)'
200
+ bad_apr '(try (rescue 1 2))'
201
+ bad_apr '(try (rescue [1] 2))'
202
+ end
203
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apricot
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.1
4
+ version: 0.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Curtis McEnroe
@@ -10,179 +9,146 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-04-13 00:00:00.000000000 Z
12
+ date: 2013-10-06 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
15
+ type: :runtime
16
+ name: rubysl
16
17
  prerelease: false
17
18
  requirement: !ruby/object:Gem::Requirement
18
19
  requirements:
19
- - - ~>
20
+ - - "~>"
20
21
  - !ruby/object:Gem::Version
21
- version: 10.0.3
22
- none: false
22
+ version: '2.0'
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 10.0.3
28
- none: false
29
- name: rake
30
- type: :development
27
+ version: '2.0'
31
28
  - !ruby/object:Gem::Dependency
29
+ type: :development
30
+ name: rake
32
31
  prerelease: false
33
32
  requirement: !ruby/object:Gem::Requirement
34
33
  requirements:
35
- - - ~>
34
+ - - "~>"
36
35
  - !ruby/object:Gem::Version
37
- version: 2.13.0
38
- none: false
36
+ version: 10.1.0
39
37
  version_requirements: !ruby/object:Gem::Requirement
40
38
  requirements:
41
- - - ~>
39
+ - - "~>"
42
40
  - !ruby/object:Gem::Version
43
- version: 2.13.0
44
- none: false
45
- name: rspec
41
+ version: 10.1.0
42
+ - !ruby/object:Gem::Dependency
46
43
  type: :development
44
+ name: rspec
45
+ prerelease: false
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: 2.14.0
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 2.14.0
47
56
  description: A compiler for a Clojure-like programming language on the Rubinius VM
48
57
  email:
49
58
  - programble@gmail.com
50
59
  - scott@scott-olson.org
51
60
  executables:
52
- - !binary |-
53
- YXByaWNvdA==
61
+ - apricot
54
62
  extensions: []
55
63
  extra_rdoc_files: []
56
64
  files:
57
- - !binary |-
58
- LmdpdGlnbm9yZQ==
59
- - !binary |-
60
- LnJzcGVj
61
- - !binary |-
62
- LnJ1YnktdmVyc2lvbg==
63
- - !binary |-
64
- LnRyYXZpcy55bWw=
65
- - !binary |-
66
- R2VtZmlsZQ==
67
- - !binary |-
68
- R2VtZmlsZS5sb2Nr
69
- - !binary |-
70
- UkVBRE1FLm1k
71
- - !binary |-
72
- UmFrZWZpbGU=
73
- - !binary |-
74
- YXByaWNvdC5nZW1zcGVj
75
- - !binary |-
76
- YmluL2Fwcmljb3Q=
77
- - !binary |-
78
- ZXhhbXBsZXMvYm90LmFwcg==
79
- - !binary |-
80
- ZXhhbXBsZXMvY2luY2gtYm90LmFwcg==
81
- - !binary |-
82
- ZXhhbXBsZXMvaGFub2kuYXBy
83
- - !binary |-
84
- ZXhhbXBsZXMvaGVsbG8uYXBy
85
- - !binary |-
86
- ZXhhbXBsZXMvcGxvdC5hcHI=
87
- - !binary |-
88
- ZXhhbXBsZXMvcXVpbmUuYXBy
89
- - !binary |-
90
- a2VybmVsL2NvcmUuYXBy
91
- - !binary |-
92
- bGliL2Fwcmljb3QucmI=
93
- - !binary |-
94
- bGliL2Fwcmljb3QvYXN0LnJi
95
- - !binary |-
96
- bGliL2Fwcmljb3QvYXN0L2lkZW50aWZpZXIucmI=
97
- - !binary |-
98
- bGliL2Fwcmljb3QvYXN0L2xpc3QucmI=
99
- - !binary |-
100
- bGliL2Fwcmljb3QvYXN0L2xpdGVyYWxzLnJi
101
- - !binary |-
102
- bGliL2Fwcmljb3QvYXN0L25vZGUucmI=
103
- - !binary |-
104
- bGliL2Fwcmljb3QvYXN0L3Njb3Blcy5yYg==
105
- - !binary |-
106
- bGliL2Fwcmljb3QvYXN0L3RvcGxldmVsLnJi
107
- - !binary |-
108
- bGliL2Fwcmljb3QvYXN0L3ZhcmlhYmxlcy5yYg==
109
- - !binary |-
110
- bGliL2Fwcmljb3QvY29tcGlsZXIucmI=
111
- - !binary |-
112
- bGliL2Fwcmljb3QvY29ucy5yYg==
113
- - !binary |-
114
- bGliL2Fwcmljb3QvZXJyb3JzLnJi
115
- - !binary |-
116
- bGliL2Fwcmljb3QvZ2VuZXJhdG9yLnJi
117
- - !binary |-
118
- bGliL2Fwcmljb3QvaWRlbnRpZmllci5yYg==
119
- - !binary |-
120
- bGliL2Fwcmljb3QvbGlzdC5yYg==
121
- - !binary |-
122
- bGliL2Fwcmljb3QvbWFjcm9leHBhbmQucmI=
123
- - !binary |-
124
- bGliL2Fwcmljb3QvbWlzYy5yYg==
125
- - !binary |-
126
- bGliL2Fwcmljb3QvbmFtZXNwYWNlLnJi
127
- - !binary |-
128
- bGliL2Fwcmljb3QvcGFyc2VyLnJi
129
- - !binary |-
130
- bGliL2Fwcmljb3QvcHJpbnRlcnMucmI=
131
- - !binary |-
132
- bGliL2Fwcmljb3QvcmVwbC5yYg==
133
- - !binary |-
134
- bGliL2Fwcmljb3QvcnVieV9leHQucmI=
135
- - !binary |-
136
- bGliL2Fwcmljb3Qvc2VxLnJi
137
- - !binary |-
138
- bGliL2Fwcmljb3Qvc3BlY2lhbF9mb3Jtcy5yYg==
139
- - !binary |-
140
- bGliL2Fwcmljb3Qvc3RhZ2VzLnJi
141
- - !binary |-
142
- bGliL2Fwcmljb3QvdmVyc2lvbi5yYg==
143
- - !binary |-
144
- c3BlYy9jb21waWxlcl9zcGVjLnJi
145
- - !binary |-
146
- c3BlYy9pZGVudGlmaWVyX3NwZWMucmI=
147
- - !binary |-
148
- c3BlYy9saXN0X3NwZWMucmI=
149
- - !binary |-
150
- c3BlYy9wYXJzZXJfc3BlYy5yYg==
151
- - !binary |-
152
- c3BlYy9zcGVjX2hlbHBlci5yYg==
153
- homepage: https://github.com/programble/apricot
65
+ - ".gitignore"
66
+ - ".rspec"
67
+ - ".ruby-version"
68
+ - ".travis.yml"
69
+ - Gemfile
70
+ - Gemfile.lock
71
+ - README.md
72
+ - Rakefile
73
+ - apricot.gemspec
74
+ - benchmarks/factorial.rb
75
+ - benchmarks/interpolate.rb
76
+ - bin/apricot
77
+ - examples/bot.apr
78
+ - examples/cinch-bot.apr
79
+ - examples/hanoi.apr
80
+ - examples/hello.apr
81
+ - examples/plot.apr
82
+ - examples/quine.apr
83
+ - examples/sinatra.apr
84
+ - kernel/core.apr
85
+ - kernel/repl.apr
86
+ - lib/apricot.rb
87
+ - lib/apricot/boot.rb
88
+ - lib/apricot/code_loader.rb
89
+ - lib/apricot/compiler.rb
90
+ - lib/apricot/cons.rb
91
+ - lib/apricot/errors.rb
92
+ - lib/apricot/generator.rb
93
+ - lib/apricot/identifier.rb
94
+ - lib/apricot/list.rb
95
+ - lib/apricot/macroexpand.rb
96
+ - lib/apricot/misc.rb
97
+ - lib/apricot/namespace.rb
98
+ - lib/apricot/reader.rb
99
+ - lib/apricot/repl.rb
100
+ - lib/apricot/ruby_ext.rb
101
+ - lib/apricot/scopes.rb
102
+ - lib/apricot/seq.rb
103
+ - lib/apricot/special_forms.rb
104
+ - lib/apricot/special_forms/def.rb
105
+ - lib/apricot/special_forms/do.rb
106
+ - lib/apricot/special_forms/dot.rb
107
+ - lib/apricot/special_forms/fn.rb
108
+ - lib/apricot/special_forms/if.rb
109
+ - lib/apricot/special_forms/let.rb
110
+ - lib/apricot/special_forms/loop.rb
111
+ - lib/apricot/special_forms/quote.rb
112
+ - lib/apricot/special_forms/recur.rb
113
+ - lib/apricot/special_forms/try.rb
114
+ - lib/apricot/variables.rb
115
+ - lib/apricot/version.rb
116
+ - spec/compiler_spec.rb
117
+ - spec/fn_spec.rb
118
+ - spec/identifier_spec.rb
119
+ - spec/list_spec.rb
120
+ - spec/reader_spec.rb
121
+ - spec/spec_helper.rb
122
+ - spec/special_forms_spec.rb
123
+ homepage: https://github.com/apricot-lang/apricot
154
124
  licenses:
155
125
  - ISC
126
+ metadata: {}
156
127
  post_install_message:
157
128
  rdoc_options: []
158
129
  require_paths:
159
130
  - lib
160
131
  required_ruby_version: !ruby/object:Gem::Requirement
161
132
  requirements:
162
- - - ! '>='
133
+ - - ">="
163
134
  - !ruby/object:Gem::Version
164
135
  version: '0'
165
- none: false
166
136
  required_rubygems_version: !ruby/object:Gem::Requirement
167
137
  requirements:
168
- - - ! '>='
138
+ - - ">="
169
139
  - !ruby/object:Gem::Version
170
140
  version: '0'
171
- none: false
172
141
  requirements: []
173
142
  rubyforge_project:
174
- rubygems_version: 1.8.25
143
+ rubygems_version: 2.1.5
175
144
  signing_key:
176
- specification_version: 3
145
+ specification_version: 4
177
146
  summary: A Clojure-like programming language on Rubinius
178
147
  test_files:
179
- - !binary |-
180
- c3BlYy9jb21waWxlcl9zcGVjLnJi
181
- - !binary |-
182
- c3BlYy9pZGVudGlmaWVyX3NwZWMucmI=
183
- - !binary |-
184
- c3BlYy9saXN0X3NwZWMucmI=
185
- - !binary |-
186
- c3BlYy9wYXJzZXJfc3BlYy5yYg==
187
- - !binary |-
188
- c3BlYy9zcGVjX2hlbHBlci5yYg==
148
+ - spec/compiler_spec.rb
149
+ - spec/fn_spec.rb
150
+ - spec/identifier_spec.rb
151
+ - spec/list_spec.rb
152
+ - spec/reader_spec.rb
153
+ - spec/spec_helper.rb
154
+ - spec/special_forms_spec.rb