opal 0.9.0.beta2 → 0.9.0.rc1

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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/.jshintrc +2 -1
  3. data/.travis.yml +8 -4
  4. data/CHANGELOG.md +270 -251
  5. data/CONTRIBUTING.md +41 -0
  6. data/README.md +8 -8
  7. data/Rakefile +1 -1
  8. data/lib/opal/cli.rb +1 -0
  9. data/lib/opal/cli_options.rb +2 -2
  10. data/lib/opal/cli_runners.rb +1 -0
  11. data/lib/opal/cli_runners/nashorn.rb +58 -0
  12. data/lib/opal/cli_runners/phantom.js +11 -9
  13. data/lib/opal/compiler.rb +2 -0
  14. data/lib/opal/erb.rb +2 -1
  15. data/lib/opal/nodes/def.rb +15 -6
  16. data/lib/opal/nodes/helpers.rb +1 -1
  17. data/lib/opal/nodes/literal.rb +1 -1
  18. data/lib/opal/nodes/masgn.rb +79 -29
  19. data/lib/opal/nodes/module.rb +1 -1
  20. data/lib/opal/nodes/top.rb +6 -2
  21. data/lib/opal/parser.rb +1 -0
  22. data/lib/opal/parser/grammar.rb +3160 -3083
  23. data/lib/opal/parser/grammar.y +39 -11
  24. data/lib/opal/parser/lexer.rb +15 -13
  25. data/lib/opal/parser/sexp.rb +5 -0
  26. data/lib/opal/version.rb +1 -1
  27. data/opal/corelib/array.rb +21 -6
  28. data/opal/corelib/basic_object.rb +17 -4
  29. data/opal/corelib/class.rb +1 -1
  30. data/opal/corelib/constants.rb +2 -2
  31. data/opal/corelib/enumerator.rb +2 -0
  32. data/opal/corelib/hash.rb +50 -50
  33. data/opal/corelib/helpers.rb +1 -1
  34. data/opal/corelib/io.rb +9 -6
  35. data/opal/corelib/kernel.rb +37 -9
  36. data/opal/corelib/module.rb +6 -17
  37. data/opal/corelib/nil.rb +4 -0
  38. data/opal/corelib/number.rb +0 -4
  39. data/opal/corelib/runtime.js +637 -662
  40. data/opal/corelib/struct.rb +7 -3
  41. data/spec/filters/bugs/array.rb +4 -9
  42. data/spec/filters/bugs/basicobject.rb +1 -15
  43. data/spec/filters/bugs/date.rb +4 -26
  44. data/spec/filters/bugs/enumerable.rb +26 -1
  45. data/spec/filters/bugs/enumerator.rb +4 -4
  46. data/spec/filters/bugs/exception.rb +1 -7
  47. data/spec/filters/bugs/float.rb +14 -0
  48. data/spec/filters/bugs/hash.rb +0 -2
  49. data/spec/filters/bugs/integer.rb +1 -1
  50. data/spec/filters/bugs/kernel.rb +47 -66
  51. data/spec/filters/bugs/language.rb +1 -2
  52. data/spec/filters/bugs/module.rb +11 -14
  53. data/spec/filters/bugs/numeric.rb +3 -3
  54. data/spec/filters/bugs/proc.rb +0 -1
  55. data/spec/filters/bugs/range.rb +2 -3
  56. data/spec/filters/bugs/regexp.rb +15 -17
  57. data/spec/filters/bugs/set.rb +2 -2
  58. data/spec/filters/bugs/string.rb +29 -5
  59. data/spec/filters/bugs/{strscan.rb → stringscanner.rb} +9 -10
  60. data/spec/filters/bugs/struct.rb +0 -4
  61. data/spec/filters/bugs/time.rb +2 -3
  62. data/spec/filters/bugs/unboundmethod.rb +3 -0
  63. data/spec/filters/unsupported/freeze.rb +2 -1
  64. data/spec/filters/unsupported/taint.rb +2 -0
  65. data/spec/lib/parser/aref_spec.rb +10 -0
  66. data/spec/lib/parser/lambda_spec.rb +14 -0
  67. data/spec/lib/parser/op_asgn_spec.rb +17 -0
  68. data/spec/lib/parser/return_spec.rb +5 -0
  69. data/spec/lib/parser/unary_spec.rb +4 -0
  70. data/spec/lib/sprockets/erb_spec.rb +1 -1
  71. data/spec/mspec/opal/formatters.rb +159 -0
  72. data/{lib → spec}/mspec/opal/runner.rb +0 -160
  73. data/spec/opal/core/hash/internals_spec.rb +162 -162
  74. data/spec/opal/core/kernel/at_exit_spec.rb +70 -0
  75. data/spec/opal/core/kernel/extend_spec.rb +1 -1
  76. data/spec/opal/core/kernel/instance_variables_spec.rb +56 -0
  77. data/spec/opal/core/language/equal_spec.rb +8 -0
  78. data/spec/opal/core/language/predefined_spec.rb +1 -1
  79. data/spec/opal/core/language/ternary_operator_spec.rb +14 -0
  80. data/spec/opal/core/language/versions/{hash_1.9.rb → hash_1_9_spec.rb} +5 -0
  81. data/spec/opal/core/module/fixtures/classes.rb +11 -1
  82. data/spec/opal/core/module/method_lookup_spec.rb +13 -0
  83. data/spec/opal/core/runtime/super_spec.rb +10 -0
  84. data/spec/opal/stdlib/native/new_spec.rb +84 -0
  85. data/spec/opal/stdlib/strscan/scan_spec.rb +11 -0
  86. data/spec/rubyspecs +6 -9
  87. data/spec/spec_helper.rb +9 -21
  88. data/stdlib/date.rb +121 -1
  89. data/stdlib/js.rb +13 -5
  90. data/stdlib/json.rb +3 -3
  91. data/stdlib/nashorn.rb +5 -0
  92. data/stdlib/nashorn/file.rb +13 -0
  93. data/stdlib/nashorn/io.rb +2 -0
  94. data/stdlib/native.rb +12 -4
  95. data/stdlib/nodejs/io.rb +5 -2
  96. data/stdlib/opal/platform.rb +19 -0
  97. data/stdlib/phantomjs.rb +4 -0
  98. data/stdlib/strscan.rb +1 -1
  99. data/tasks/building.rake +2 -1
  100. data/tasks/testing.rake +29 -34
  101. data/tasks/testing/{phantomjs1-sprockets.js → sprockets-phantomjs.js} +2 -20
  102. data/vendored-minitest/minitest/test.rb +7 -15
  103. metadata +32 -9
  104. data/lib/mspec/opal/main.rb.erb +0 -9
data/stdlib/js.rb CHANGED
@@ -23,11 +23,19 @@ module JS
23
23
  end
24
24
 
25
25
  # Use new to create a new instance of the prototype of the function.
26
- def new(func, *args, &block)
27
- args << block if block
28
- f = `function(){return func.apply(this, args)}`
29
- f.JS[:prototype] = func.JS[:prototype]
30
- `new f()`
26
+ if `typeof Function.prototype.bind == 'function'`
27
+ def new(func, *args, &block)
28
+ args.insert(0, `this`)
29
+ args << block if block
30
+ `new (#{func}.bind.apply(#{func}, #{args}))()`
31
+ end
32
+ else
33
+ def new(func, *args, &block)
34
+ args << block if block
35
+ f = `function(){return func.apply(this, args)}`
36
+ f.JS[:prototype] = func.JS[:prototype]
37
+ `new f()`
38
+ end
31
39
  end
32
40
 
33
41
  # Use typeof to return the underlying javascript type of value.
data/stdlib/json.rb CHANGED
@@ -83,7 +83,7 @@ module JSON
83
83
  options[:object_class] ||= Hash
84
84
  options[:array_class] ||= Array
85
85
 
86
- `to_opal(js_object, options.smap)`
86
+ `to_opal(js_object, options.$$smap)`
87
87
  end
88
88
 
89
89
  def self.generate(obj, options = {})
@@ -143,11 +143,11 @@ class Hash
143
143
  %x{
144
144
  var result = [];
145
145
 
146
- for (var i = 0, keys = self.keys, length = keys.length, key, value; i < length; i++) {
146
+ for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {
147
147
  key = keys[i];
148
148
 
149
149
  if (key.$$is_string) {
150
- value = self.smap[key];
150
+ value = self.$$smap[key];
151
151
  } else {
152
152
  value = key.value;
153
153
  key = key.key;
data/stdlib/nashorn.rb ADDED
@@ -0,0 +1,5 @@
1
+ module Nashorn
2
+ end
3
+
4
+ require 'nashorn/io'
5
+ require 'nashorn/file'
@@ -0,0 +1,13 @@
1
+ class File
2
+
3
+ def self.read path
4
+ %x(
5
+ var Paths = Java.type('java.nio.file.Paths');
6
+ var Files = Java.type('java.nio.file.Files');
7
+ var lines = Files.readAllLines(Paths.get(path), Java.type('java.nio.charset.StandardCharsets').UTF_8);
8
+ var data = [];
9
+ lines.forEach(function(line) { data.push(line); });
10
+ return data.join("\n");
11
+ )
12
+ end
13
+ end
@@ -0,0 +1,2 @@
1
+ $stdout.write_proc = `function(s){print(s)}`
2
+ $stderr.write_proc = `function(s){print(s)}`
data/stdlib/native.rb CHANGED
@@ -213,6 +213,14 @@ module Kernel
213
213
  nil
214
214
  elsif native?(obj)
215
215
  Native::Object.new(obj)
216
+ elsif obj.is_a?(Array)
217
+ obj.map do |o|
218
+ Native(o)
219
+ end
220
+ elsif obj.is_a?(Proc)
221
+ proc do |*args, &block|
222
+ Native(obj.call(*args, &block))
223
+ end
216
224
  else
217
225
  obj
218
226
  end
@@ -524,8 +532,8 @@ class Hash
524
532
  def initialize(defaults = undefined, &block)
525
533
  %x{
526
534
  if (defaults !== undefined && defaults.constructor === Object) {
527
- var smap = self.smap,
528
- keys = self.keys,
535
+ var smap = self.$$smap,
536
+ keys = self.$$keys,
529
537
  key, value;
530
538
 
531
539
  for (key in defaults) {
@@ -561,8 +569,8 @@ class Hash
561
569
  def to_n
562
570
  %x{
563
571
  var result = {},
564
- keys = self.keys,
565
- smap = self.smap,
572
+ keys = self.$$keys,
573
+ smap = self.$$smap,
566
574
  key, value;
567
575
 
568
576
  for (var i = 0, length = keys.length; i < length; i++) {
data/stdlib/nodejs/io.rb CHANGED
@@ -1,2 +1,5 @@
1
- $stdout.write_proc = -> (string) {`process.stdout.write(string)`}
2
- $stderr.write_proc = -> (string) {`process.stderr.write(string)`}
1
+ STDOUT.write_proc = -> (string) {`process.stdout.write(string)`}
2
+ STDERR.write_proc = -> (string) {`process.stderr.write(string)`}
3
+
4
+ STDOUT.tty = true
5
+ STDERR.tty = true
@@ -0,0 +1,19 @@
1
+ phantomjs = `typeof(callPhantom) !== "undefined"`
2
+ browser = `typeof(document) !== "undefined"`
3
+ node = `typeof(process) !== "undefined" && process.versions && process.versions.node`
4
+ nashorn = `typeof(Java) !== "undefined" && Java.type`
5
+
6
+ case
7
+ when nashorn
8
+ OPAL_PLATFORM = 'nashorn'
9
+ require 'nashorn'
10
+ when phantomjs
11
+ OPAL_PLATFORM = 'phantomjs'
12
+ require 'phantomjs'
13
+ when node
14
+ OPAL_PLATFORM = 'nodejs'
15
+ require 'nodejs/kernel'
16
+ require 'nodejs/io'
17
+ else # browser, which is the primary target
18
+ # noop
19
+ end
data/stdlib/phantomjs.rb CHANGED
@@ -1,3 +1,7 @@
1
1
  `Opal.exit = function(status) { callPhantom(['exit', status]); };`
2
+
2
3
  STDOUT.write_proc = `function(str){callPhantom(['stdout', str])}`
3
4
  STDERR.write_proc = `function(str){callPhantom(['stderr', str])}`
5
+
6
+ STDOUT.tty = true
7
+ STDERR.tty = true
data/stdlib/strscan.rb CHANGED
@@ -297,6 +297,6 @@ class StringScanner
297
297
 
298
298
  private
299
299
  def anchor(pattern)
300
- `new RegExp('^' + pattern.toString().substr(1, pattern.toString().length - 2))`
300
+ `new RegExp('^(?:' + pattern.toString().substr(1, pattern.toString().length - 2) + ')')`
301
301
  end
302
302
  end
data/tasks/building.rake CHANGED
@@ -48,7 +48,8 @@ end
48
48
 
49
49
  desc 'Rebuild grammar.rb for opal parser'
50
50
  task :racc do
51
- %x(racc -l lib/opal/parser/grammar.y -o lib/opal/parser/grammar.rb)
51
+ debug_option = '--debug' if ENV['RACC_DEBUG']
52
+ sh "racc #{debug_option} -l -o lib/opal/parser/grammar.rb lib/opal/parser/grammar.y"
52
53
  end
53
54
 
54
55
  desc 'Remove any generated file.'
data/tasks/testing.rake CHANGED
@@ -14,6 +14,7 @@ module Testing
14
14
  mspec/helpers/environment
15
15
  mspec/guards/block_device
16
16
  mspec/guards/endian
17
+ a_file
17
18
  ]
18
19
  end
19
20
 
@@ -73,10 +74,12 @@ module Testing
73
74
 
74
75
  File.write filename, <<-RUBY
75
76
  require 'spec_helper'
77
+ require 'opal/platform'
76
78
  #{enter_benchmarking_mode}
77
79
  #{requires.join("\n ")}
78
80
  OSpecFilter.main.unused_filters_message(list: #{!!ENV['LIST_UNUSED_FILTERS']})
79
81
  OSpecRunner.main.did_finish
82
+ exit MSpec.exit_code
80
83
  RUBY
81
84
  end
82
85
 
@@ -101,10 +104,10 @@ Use PATTERN environment variable to manually set the glob for specs:
101
104
  DESC
102
105
 
103
106
  %w[rubyspec opal].each do |suite|
104
- desc "Run the MSpec/#{suite} test suite on Phantom.js" + pattern_usage
105
- task :"mspec_#{suite}_phantom" do
106
- filename = File.expand_path('tmp/mspec_phantom.rb')
107
- runner = "#{__dir__}/testing/phantomjs1-sprockets.js"
107
+ desc "Run the MSpec/#{suite} test suite on Opal::Sprockets/phantomjs" + pattern_usage
108
+ task :"mspec_#{suite}_sprockets_phantomjs" do
109
+ filename = File.expand_path('tmp/mspec_sprockets_phantomjs.rb')
110
+ runner = "#{__dir__}/testing/sprockets-phantomjs.js"
108
111
  port = 9999
109
112
  url = "http://localhost:#{port}/"
110
113
 
@@ -114,7 +117,7 @@ DESC
114
117
  Testing.stubs.each {|s| ::Opal::Processor.stub_file s }
115
118
 
116
119
  Opal::Config.arity_check_enabled = true
117
- Opal::Config.freezing_stubs_enabled = false
120
+ Opal::Config.freezing_stubs_enabled = true
118
121
  Opal::Config.tainting_stubs_enabled = false
119
122
  Opal::Config.dynamic_require_severity = :error
120
123
 
@@ -134,29 +137,33 @@ DESC
134
137
  end
135
138
  end
136
139
 
137
- desc "Run the MSpec test suite on Node.js" + pattern_usage
138
- task :"mspec_#{suite}_node" do
139
- include_paths = '-Ispec -Ilib'
140
+ %w[nodejs phantomjs].each do |platform|
141
+ desc "Run the MSpec test suite on Opal::Builder/#{platform}" + pattern_usage
142
+ task :"mspec_#{suite}_#{platform}" do
143
+ include_paths = '-Ispec -Ilib'
140
144
 
141
- filename = 'tmp/mspec_node.rb'
142
- js_filename = 'tmp/mspec_node.js'
143
- mkdir_p File.dirname(filename)
144
- bm_filepath = Testing.bm_filepath if ENV['BM']
145
- Testing.write_file filename, Testing.specs(ENV.to_hash.merge 'SUITE' => suite), bm_filepath
145
+ filename = "tmp/mspec_#{platform}.rb"
146
+ mkdir_p File.dirname(filename)
147
+ bm_filepath = Testing.bm_filepath if ENV['BM']
148
+ Testing.write_file filename, Testing.specs(ENV.to_hash.merge 'SUITE' => suite), bm_filepath
146
149
 
147
- stubs = Testing.stubs.map{|s| "-s#{s}"}.join(' ')
150
+ stubs = Testing.stubs.map{|s| "-s#{s}"}.join(' ')
148
151
 
149
- sh "ruby -rbundler/setup -r#{__dir__}/testing/mspec_special_calls "\
150
- "bin/opal -gmspec #{include_paths} #{stubs} -rnodejs/io -rnodejs/kernel -Dwarning -A #{filename} -c > #{js_filename}"
151
- sh "NODE_PATH=stdlib/nodejs/node_modules node #{js_filename}"
152
+ sh "ruby -rbundler/setup -r#{__dir__}/testing/mspec_special_calls "\
153
+ "bin/opal -gmspec #{include_paths} #{stubs} -R#{platform} -Dwarning -A #{filename}"
152
154
 
153
- if bm_filepath
154
- puts "Benchmark results have been written to #{bm_filepath}"
155
- puts "To view the results, run bundle exec rake bench:report"
155
+ if bm_filepath
156
+ puts "Benchmark results have been written to #{bm_filepath}"
157
+ puts "To view the results, run bundle exec rake bench:report"
158
+ end
156
159
  end
157
160
  end
158
161
  end
159
162
 
163
+ task :mspec_phantomjs => [:mspec_opal_phantomjs, :mspec_rubyspec_phantomjs]
164
+ task :mspec_nodejs => [:mspec_opal_nodejs, :mspec_rubyspec_nodejs]
165
+ task :mspec_sprockets_phantomjs => [:mspec_opal_sprockets_phantomjs, :mspec_rubyspec_sprockets_phantomjs]
166
+
160
167
  task :jshint do
161
168
  js_filename = 'tmp/jshint.js'
162
169
  mkdir_p 'tmp'
@@ -213,23 +220,11 @@ task :cruby_tests do
213
220
  puts "== Running: #{files.join ", "}"
214
221
 
215
222
  sh "ruby -rbundler/setup "\
216
- "bin/opal #{include_paths} #{stubs} -rnodejs -ropal-parser -Dwarning -A #{filename} -c > #{js_filename}"
223
+ "bin/opal #{include_paths} #{stubs} -ropal/platform -ropal-parser -Dwarning -A #{filename} -c > #{js_filename}"
217
224
  sh "NODE_PATH=stdlib/nodejs/node_modules node #{js_filename}"
218
225
  end
219
226
 
220
- task :mspec => [:mspec_rubyspec_node, :mspec_rubyspec_phantom, :mspec_opal_node, :mspec_opal_phantom]
227
+ task :mspec => [:mspec_phantomjs, :mspec_nodejs, :mspec_sprockets_phantomjs]
221
228
  task :minitest => [:cruby_tests]
222
229
  task :test_all => [:rspec, :mspec, :minitest]
223
230
 
224
-
225
- if (current_suite = ENV['SUITE'])
226
- # Legacy tasks, only if ENV['SUITE'] is set
227
- desc "Deprecated: use mspec_rubyspec_phantom or mspec_opal_phantom instead"
228
- task :mspec_phantom => :"mspec_#{current_suite}_phantom"
229
-
230
- desc "Deprecated: use mspec_rubyspec_node or mspec_opal_node instead"
231
- task :mspec_node => :"mspec_#{current_suite}_node"
232
- else
233
- task :mspec_phantom => [:mspec_opal_phantom, :mspec_rubyspec_phantom]
234
- task :mspec_node => [:mspec_opal_node, :mspec_rubyspec_node]
235
- end
@@ -1,7 +1,8 @@
1
1
  /*
2
2
  * Test runner for phantomjs
3
3
  */
4
- var args = phantom.args;
4
+ var system = require('system');
5
+ var args = phantom.args ? phantom.args : system.args.slice(1);
5
6
  var page = require('webpage').create();
6
7
  var url = args[0];
7
8
 
@@ -25,7 +26,6 @@ page.onInitialized = function() {
25
26
  });
26
27
  };
27
28
 
28
- var system = require('system');
29
29
  page.onCallback = function(data) {
30
30
  switch (data[0]) {
31
31
  case 'exit':
@@ -46,23 +46,5 @@ page.open(url, function(status) {
46
46
  if (status !== 'success') {
47
47
  console.error("Cannot load: " + url);
48
48
  phantom_exit(1);
49
- } else {
50
- var timeout = parseInt(args[1] || 60000, 10);
51
- var start = Date.now();
52
- var interval = setInterval(function() {
53
- if (Date.now() > start + timeout) {
54
- console.error("Specs timed out");
55
- phantom_exit(124);
56
- } else {
57
- var code = page.evaluate(function() {
58
- return window.OPAL_SPEC_CODE;
59
- });
60
-
61
- if (code === 0 || code === 1) {
62
- clearInterval(interval);
63
- phantom_exit(code);
64
- }
65
- }
66
- }, 500);
67
49
  }
68
50
  });
@@ -202,21 +202,13 @@ module Minitest
202
202
  end # LifecycleHooks
203
203
 
204
204
  def capture_exceptions # :nodoc:
205
- begin
206
- yield
207
- # rescue *PASSTHROUGH_EXCEPTIONS
208
- # raise
209
- # rescue Assertion => e
210
- # self.failures << e
211
- # rescue Exception => e
212
- # self.failures << UnexpectedError.new(e)
213
- rescue => e
214
- case e
215
- when *PASSTHROUGH_EXCEPTIONS
216
- when Assertion then self.failures << e
217
- when Exception then self.failures << UnexpectedError.new(e)
218
- end
219
- end
205
+ yield
206
+ rescue *PASSTHROUGH_EXCEPTIONS
207
+ raise
208
+ rescue Assertion => e
209
+ self.failures << e
210
+ rescue Exception => e
211
+ self.failures << UnexpectedError.new(e)
220
212
  end
221
213
 
222
214
  ##
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.beta2
4
+ version: 0.9.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Beynon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-05 00:00:00.000000000 Z
11
+ date: 2015-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sourcemap
@@ -347,8 +347,6 @@ files:
347
347
  - examples/sinatra/Gemfile.lock
348
348
  - examples/sinatra/app/application.rb
349
349
  - examples/sinatra/config.ru
350
- - lib/mspec/opal/main.rb.erb
351
- - lib/mspec/opal/runner.rb
352
350
  - lib/opal.rb
353
351
  - lib/opal/builder.rb
354
352
  - lib/opal/builder_processors.rb
@@ -356,6 +354,7 @@ files:
356
354
  - lib/opal/cli_options.rb
357
355
  - lib/opal/cli_runners.rb
358
356
  - lib/opal/cli_runners/apple_script.rb
357
+ - lib/opal/cli_runners/nashorn.rb
359
358
  - lib/opal/cli_runners/nodejs.rb
360
359
  - lib/opal/cli_runners/phantom.js
361
360
  - lib/opal/cli_runners/phantomjs.rb
@@ -484,7 +483,7 @@ files:
484
483
  - spec/filters/bugs/set.rb
485
484
  - spec/filters/bugs/singleton.rb
486
485
  - spec/filters/bugs/string.rb
487
- - spec/filters/bugs/strscan.rb
486
+ - spec/filters/bugs/stringscanner.rb
488
487
  - spec/filters/bugs/struct.rb
489
488
  - spec/filters/bugs/time.rb
490
489
  - spec/filters/bugs/unboundmethod.rb
@@ -541,6 +540,7 @@ files:
541
540
  - spec/lib/lexer_spec.rb
542
541
  - spec/lib/parser/alias_spec.rb
543
542
  - spec/lib/parser/and_spec.rb
543
+ - spec/lib/parser/aref_spec.rb
544
544
  - spec/lib/parser/attrasgn_spec.rb
545
545
  - spec/lib/parser/begin_spec.rb
546
546
  - spec/lib/parser/block_spec.rb
@@ -558,6 +558,7 @@ files:
558
558
  - spec/lib/parser/not_spec.rb
559
559
  - spec/lib/parser/op_asgn1_spec.rb
560
560
  - spec/lib/parser/op_asgn2_spec.rb
561
+ - spec/lib/parser/op_asgn_spec.rb
561
562
  - spec/lib/parser/or_spec.rb
562
563
  - spec/lib/parser/return_spec.rb
563
564
  - spec/lib/parser/sclass_spec.rb
@@ -580,6 +581,8 @@ files:
580
581
  - spec/lib/sprockets/server_spec.rb
581
582
  - spec/lib/sprockets_spec.rb
582
583
  - spec/lib/tilt/opal_spec.rb
584
+ - spec/mspec/opal/formatters.rb
585
+ - spec/mspec/opal/runner.rb
583
586
  - spec/opal/compiler/irb_spec.rb
584
587
  - spec/opal/core/arity_spec.rb
585
588
  - spec/opal/core/array/intersection_spec.rb
@@ -629,6 +632,7 @@ files:
629
632
  - spec/opal/core/hash/internals_spec.rb
630
633
  - spec/opal/core/helpers_spec.rb
631
634
  - spec/opal/core/kernel/Array_spec.rb
635
+ - spec/opal/core/kernel/at_exit_spec.rb
632
636
  - spec/opal/core/kernel/block_given_spec.rb
633
637
  - spec/opal/core/kernel/class_spec.rb
634
638
  - spec/opal/core/kernel/define_singleton_method_spec.rb
@@ -640,6 +644,7 @@ files:
640
644
  - spec/opal/core/kernel/instance_variable_defined_spec.rb
641
645
  - spec/opal/core/kernel/instance_variable_get_spec.rb
642
646
  - spec/opal/core/kernel/instance_variable_set_spec.rb
647
+ - spec/opal/core/kernel/instance_variables_spec.rb
643
648
  - spec/opal/core/kernel/loop_spec.rb
644
649
  - spec/opal/core/kernel/match_spec.rb
645
650
  - spec/opal/core/kernel/method_spec.rb
@@ -656,6 +661,7 @@ files:
656
661
  - spec/opal/core/kernel/sprintf_spec.rb
657
662
  - spec/opal/core/language/block_spec.rb
658
663
  - spec/opal/core/language/class_spec.rb
664
+ - spec/opal/core/language/equal_spec.rb
659
665
  - spec/opal/core/language/fixtures/array.rb
660
666
  - spec/opal/core/language/fixtures/block.rb
661
667
  - spec/opal/core/language/fixtures/break.rb
@@ -676,13 +682,14 @@ files:
676
682
  - spec/opal/core/language/regexp_spec.rb
677
683
  - spec/opal/core/language/send_spec.rb
678
684
  - spec/opal/core/language/string_spec.rb
685
+ - spec/opal/core/language/ternary_operator_spec.rb
679
686
  - spec/opal/core/language/variables_spec.rb
680
687
  - spec/opal/core/language/versions/array_1.9.rb
681
688
  - spec/opal/core/language/versions/block_1.9.rb
682
689
  - spec/opal/core/language/versions/break_1.9.rb
683
690
  - spec/opal/core/language/versions/case_1.9.rb
684
691
  - spec/opal/core/language/versions/def_2_0_spec.rb
685
- - spec/opal/core/language/versions/hash_1.9.rb
692
+ - spec/opal/core/language/versions/hash_1_9_spec.rb
686
693
  - spec/opal/core/language/versions/literal_lambda_1.9.rb
687
694
  - spec/opal/core/language/versions/not_1.9.rb
688
695
  - spec/opal/core/language/versions/send_1.9.rb
@@ -701,6 +708,7 @@ files:
701
708
  - spec/opal/core/module/constants_spec.rb
702
709
  - spec/opal/core/module/fixtures/classes.rb
703
710
  - spec/opal/core/module/method_defined_spec.rb
711
+ - spec/opal/core/module/method_lookup_spec.rb
704
712
  - spec/opal/core/module/module_function_spec.rb
705
713
  - spec/opal/core/module/name_spec.rb
706
714
  - spec/opal/core/module/public_method_defined_spec.rb
@@ -795,6 +803,7 @@ files:
795
803
  - spec/opal/stdlib/promise/trace_spec.rb
796
804
  - spec/opal/stdlib/promise/value_spec.rb
797
805
  - spec/opal/stdlib/promise/when_spec.rb
806
+ - spec/opal/stdlib/strscan/scan_spec.rb
798
807
  - spec/opal/stdlib/template/paths_spec.rb
799
808
  - spec/opal/stdlib/thread/mutex_spec.rb
800
809
  - spec/opal/stdlib/thread/thread_queue_spec.rb
@@ -823,6 +832,9 @@ files:
823
832
  - stdlib/js.rb
824
833
  - stdlib/json.rb
825
834
  - stdlib/math.rb
835
+ - stdlib/nashorn.rb
836
+ - stdlib/nashorn/file.rb
837
+ - stdlib/nashorn/io.rb
826
838
  - stdlib/native.rb
827
839
  - stdlib/nodejs.rb
828
840
  - stdlib/nodejs/dir.rb
@@ -1024,6 +1036,7 @@ files:
1024
1036
  - stdlib/observer.rb
1025
1037
  - stdlib/opal-parser.rb
1026
1038
  - stdlib/opal-source-maps.rb
1039
+ - stdlib/opal/platform.rb
1027
1040
  - stdlib/ostruct.rb
1028
1041
  - stdlib/pathname.rb
1029
1042
  - stdlib/phantomjs.rb
@@ -1053,7 +1066,7 @@ files:
1053
1066
  - tasks/linting.rake
1054
1067
  - tasks/testing.rake
1055
1068
  - tasks/testing/mspec_special_calls.rb
1056
- - tasks/testing/phantomjs1-sprockets.js
1069
+ - tasks/testing/sprockets-phantomjs.js
1057
1070
  - test/opal/test_keyword.rb
1058
1071
  - vendored-minitest/minitest.rb
1059
1072
  - vendored-minitest/minitest/assertions.rb
@@ -1119,7 +1132,7 @@ test_files:
1119
1132
  - spec/filters/bugs/set.rb
1120
1133
  - spec/filters/bugs/singleton.rb
1121
1134
  - spec/filters/bugs/string.rb
1122
- - spec/filters/bugs/strscan.rb
1135
+ - spec/filters/bugs/stringscanner.rb
1123
1136
  - spec/filters/bugs/struct.rb
1124
1137
  - spec/filters/bugs/time.rb
1125
1138
  - spec/filters/bugs/unboundmethod.rb
@@ -1176,6 +1189,7 @@ test_files:
1176
1189
  - spec/lib/lexer_spec.rb
1177
1190
  - spec/lib/parser/alias_spec.rb
1178
1191
  - spec/lib/parser/and_spec.rb
1192
+ - spec/lib/parser/aref_spec.rb
1179
1193
  - spec/lib/parser/attrasgn_spec.rb
1180
1194
  - spec/lib/parser/begin_spec.rb
1181
1195
  - spec/lib/parser/block_spec.rb
@@ -1193,6 +1207,7 @@ test_files:
1193
1207
  - spec/lib/parser/not_spec.rb
1194
1208
  - spec/lib/parser/op_asgn1_spec.rb
1195
1209
  - spec/lib/parser/op_asgn2_spec.rb
1210
+ - spec/lib/parser/op_asgn_spec.rb
1196
1211
  - spec/lib/parser/or_spec.rb
1197
1212
  - spec/lib/parser/return_spec.rb
1198
1213
  - spec/lib/parser/sclass_spec.rb
@@ -1215,6 +1230,8 @@ test_files:
1215
1230
  - spec/lib/sprockets/server_spec.rb
1216
1231
  - spec/lib/sprockets_spec.rb
1217
1232
  - spec/lib/tilt/opal_spec.rb
1233
+ - spec/mspec/opal/formatters.rb
1234
+ - spec/mspec/opal/runner.rb
1218
1235
  - spec/opal/compiler/irb_spec.rb
1219
1236
  - spec/opal/core/arity_spec.rb
1220
1237
  - spec/opal/core/array/intersection_spec.rb
@@ -1264,6 +1281,7 @@ test_files:
1264
1281
  - spec/opal/core/hash/internals_spec.rb
1265
1282
  - spec/opal/core/helpers_spec.rb
1266
1283
  - spec/opal/core/kernel/Array_spec.rb
1284
+ - spec/opal/core/kernel/at_exit_spec.rb
1267
1285
  - spec/opal/core/kernel/block_given_spec.rb
1268
1286
  - spec/opal/core/kernel/class_spec.rb
1269
1287
  - spec/opal/core/kernel/define_singleton_method_spec.rb
@@ -1275,6 +1293,7 @@ test_files:
1275
1293
  - spec/opal/core/kernel/instance_variable_defined_spec.rb
1276
1294
  - spec/opal/core/kernel/instance_variable_get_spec.rb
1277
1295
  - spec/opal/core/kernel/instance_variable_set_spec.rb
1296
+ - spec/opal/core/kernel/instance_variables_spec.rb
1278
1297
  - spec/opal/core/kernel/loop_spec.rb
1279
1298
  - spec/opal/core/kernel/match_spec.rb
1280
1299
  - spec/opal/core/kernel/method_spec.rb
@@ -1291,6 +1310,7 @@ test_files:
1291
1310
  - spec/opal/core/kernel/sprintf_spec.rb
1292
1311
  - spec/opal/core/language/block_spec.rb
1293
1312
  - spec/opal/core/language/class_spec.rb
1313
+ - spec/opal/core/language/equal_spec.rb
1294
1314
  - spec/opal/core/language/fixtures/array.rb
1295
1315
  - spec/opal/core/language/fixtures/block.rb
1296
1316
  - spec/opal/core/language/fixtures/break.rb
@@ -1311,13 +1331,14 @@ test_files:
1311
1331
  - spec/opal/core/language/regexp_spec.rb
1312
1332
  - spec/opal/core/language/send_spec.rb
1313
1333
  - spec/opal/core/language/string_spec.rb
1334
+ - spec/opal/core/language/ternary_operator_spec.rb
1314
1335
  - spec/opal/core/language/variables_spec.rb
1315
1336
  - spec/opal/core/language/versions/array_1.9.rb
1316
1337
  - spec/opal/core/language/versions/block_1.9.rb
1317
1338
  - spec/opal/core/language/versions/break_1.9.rb
1318
1339
  - spec/opal/core/language/versions/case_1.9.rb
1319
1340
  - spec/opal/core/language/versions/def_2_0_spec.rb
1320
- - spec/opal/core/language/versions/hash_1.9.rb
1341
+ - spec/opal/core/language/versions/hash_1_9_spec.rb
1321
1342
  - spec/opal/core/language/versions/literal_lambda_1.9.rb
1322
1343
  - spec/opal/core/language/versions/not_1.9.rb
1323
1344
  - spec/opal/core/language/versions/send_1.9.rb
@@ -1336,6 +1357,7 @@ test_files:
1336
1357
  - spec/opal/core/module/constants_spec.rb
1337
1358
  - spec/opal/core/module/fixtures/classes.rb
1338
1359
  - spec/opal/core/module/method_defined_spec.rb
1360
+ - spec/opal/core/module/method_lookup_spec.rb
1339
1361
  - spec/opal/core/module/module_function_spec.rb
1340
1362
  - spec/opal/core/module/name_spec.rb
1341
1363
  - spec/opal/core/module/public_method_defined_spec.rb
@@ -1430,6 +1452,7 @@ test_files:
1430
1452
  - spec/opal/stdlib/promise/trace_spec.rb
1431
1453
  - spec/opal/stdlib/promise/value_spec.rb
1432
1454
  - spec/opal/stdlib/promise/when_spec.rb
1455
+ - spec/opal/stdlib/strscan/scan_spec.rb
1433
1456
  - spec/opal/stdlib/template/paths_spec.rb
1434
1457
  - spec/opal/stdlib/thread/mutex_spec.rb
1435
1458
  - spec/opal/stdlib/thread/thread_queue_spec.rb