summaryrefslogtreecommitdiff
path: root/test/prism/api/parse_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/prism/api/parse_test.rb')
-rw-r--r--test/prism/api/parse_test.rb41
1 files changed, 40 insertions, 1 deletions
diff --git a/test/prism/api/parse_test.rb b/test/prism/api/parse_test.rb
index ee8061c98c..c9a47c1a61 100644
--- a/test/prism/api/parse_test.rb
+++ b/test/prism/api/parse_test.rb
@@ -116,6 +116,15 @@ module Prism
assert Prism.parse_success?("1 + 1", version: "3.4.9")
assert Prism.parse_success?("1 + 1", version: "3.4.10")
+ assert Prism.parse_success?("1 + 1", version: "3.5")
+ assert Prism.parse_success?("1 + 1", version: "3.5.0")
+
+ assert Prism.parse_success?("1 + 1", version: "4.0")
+ assert Prism.parse_success?("1 + 1", version: "4.0.0")
+
+ assert Prism.parse_success?("1 + 1", version: "4.1")
+ assert Prism.parse_success?("1 + 1", version: "4.1.0")
+
assert Prism.parse_success?("1 + 1", version: "latest")
# Test edge case
@@ -133,10 +142,40 @@ module Prism
# Not supported version (too new)
assert_raise ArgumentError do
- Prism.parse("1 + 1", version: "3.5.0")
+ Prism.parse("1 + 1", version: "3.6.0")
end
end
+ def test_version_current
+ if RUBY_VERSION >= "3.3"
+ assert Prism.parse_success?("1 + 1", version: "current")
+ else
+ assert_raise(CurrentVersionError) { Prism.parse_success?("1 + 1", version: "current") }
+ end
+ end
+
+ def test_nearest
+ assert Prism.parse_success?("1 + 1", version: "nearest")
+ end
+
+ def test_scopes
+ assert_kind_of Prism::CallNode, Prism.parse_statement("foo")
+ assert_kind_of Prism::LocalVariableReadNode, Prism.parse_statement("foo", scopes: [[:foo]])
+ assert_kind_of Prism::LocalVariableReadNode, Prism.parse_statement("foo", scopes: [Prism.scope(locals: [:foo])])
+
+ assert Prism.parse_failure?("foo(*)")
+ assert Prism.parse_success?("foo(*)", scopes: [Prism.scope(forwarding: [:*])])
+
+ assert Prism.parse_failure?("foo(**)")
+ assert Prism.parse_success?("foo(**)", scopes: [Prism.scope(forwarding: [:**])])
+
+ assert Prism.parse_failure?("foo(&)")
+ assert Prism.parse_success?("foo(&)", scopes: [Prism.scope(forwarding: [:&])])
+
+ assert Prism.parse_failure?("foo(...)")
+ assert Prism.parse_success?("foo(...)", scopes: [Prism.scope(forwarding: [:"..."])])
+ end
+
private
def find_source_file_node(program)