You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by co...@apache.org on 2026/03/17 16:45:28 UTC

(tinkerpop) 01/01: [TINKERPOP-3236] Expand grammar argument types for coin and pagerank steps to numericArgument

This is an automated email from the ASF dual-hosted git repository.

colegreer pushed a commit to branch TINKERPOP-3236
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit a0e0ff9e327c66d27021c1d652641e34f2ae8e0c
Author: Cole Greer <Co...@improving.com>
AuthorDate: Tue Mar 17 09:44:04 2026 -0700

    [TINKERPOP-3236] Expand grammar argument types for coin and pagerank steps to numericArgument
---
 CHANGELOG.asciidoc                                             |  1 +
 .../tinkerpop/gremlin/language/grammar/ArgumentVisitor.java    | 10 +++++-----
 .../gremlin/language/grammar/DefaultGremlinBaseVisitor.java    |  2 +-
 .../gremlin/language/grammar/GenericLiteralVisitor.java        |  4 ++--
 .../gremlin/language/grammar/TraversalMethodVisitor.java       |  4 ++--
 .../gremlin/language/grammar/ArgumentVisitorTest.java          |  2 +-
 gremlin-language/src/main/antlr4/Gremlin.g4                    |  8 ++++----
 7 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 555e70a604..984c5dd4f4 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -29,6 +29,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Fixed bug in `SubgraphStrategy` where specifying `edges` and `vertices` filters that had `map`-type steps could generate an error.
 * Fixed bug in `ReservedKeysVerificationStrategy` where `AddPropertyStep` was not triggering proper validations.
 * Fixed bug in `mergeE` where `onCreate` validation of invalid static argument overrides did not trigger until traversal runtime.
+* Expand grammar argument types for `coin` and `pagerank` steps to `numericArgument` from `floatArgument`.
 * Added `closeSessionPostGraphOp` to the Gremlin Server settings to indicate that the `Session` should be closed on either a successful commit or rollback.
 * Added `SessionedChildClient` that borrows connections from a different `Client` for use with `Sessions`.
 * Added `reuseConnectionsForSessions` to Java GLV settings to decide whether to use `SessionedChildClient` for remote transactions.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java
index a461896fa7..9b7212c638 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java
@@ -66,8 +66,8 @@ public class ArgumentVisitor extends DefaultGremlinBaseVisitor<Object> {
     /**
      * Wrapper to visit function for float types.
      */
-    public Number parseNumber(final GremlinParser.FloatArgumentContext ctx) {
-        return (Number) visitFloatArgument(ctx);
+    public Number parseNumber(final GremlinParser.NumericArgumentContext ctx) {
+        return (Number) visitNumericArgument(ctx);
     }
 
     /**
@@ -240,9 +240,9 @@ public class ArgumentVisitor extends DefaultGremlinBaseVisitor<Object> {
     }
 
     @Override
-    public Object visitFloatArgument(final GremlinParser.FloatArgumentContext ctx) {
-        if (ctx.floatLiteral() != null) {
-            return antlr.genericVisitor.parseFloating(ctx.floatLiteral());
+    public Object visitNumericArgument(final GremlinParser.NumericArgumentContext ctx) {
+        if (ctx.numericLiteral() != null) {
+            return antlr.genericVisitor.parseNumeric(ctx.numericLiteral());
         } else {
             return visitVariable(ctx.variable());
         }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
index c0432ddd83..3582444ab6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
@@ -1462,7 +1462,7 @@ public class DefaultGremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> im
 	/**
 	 * {@inheritDoc}
 	 */
-	@Override public T visitFloatArgument(final GremlinParser.FloatArgumentContext ctx) { notImplemented(ctx); return null; }
+	@Override public T visitNumericArgument(final GremlinParser.NumericArgumentContext ctx) { notImplemented(ctx); return null; }
 	/**
 	 * {@inheritDoc}
 	 */
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java
index d7f87f298a..a4d5a8b641 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java
@@ -63,8 +63,8 @@ public class GenericLiteralVisitor extends DefaultGremlinBaseVisitor<Object> {
     /**
      * Parse floating literal context and return a floating type number.
      */
-    public Number parseFloating(final GremlinParser.FloatLiteralContext floatLiteral) {
-        return (Number) visitFloatLiteral(floatLiteral);
+    public Number parseNumeric(final GremlinParser.NumericLiteralContext numericLiteral) {
+        return (Number) visitNumericLiteral(numericLiteral);
     }
 
     /**
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
index 6dcafe2e65..222af839e3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
@@ -443,7 +443,7 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
      */
     @Override
     public GraphTraversal visitTraversalMethod_coin(final GremlinParser.TraversalMethod_coinContext ctx) {
-        return graphTraversal.coin(((Number) antlr.argumentVisitor.visitFloatArgument(ctx.floatArgument())).doubleValue());
+        return graphTraversal.coin(((Number) antlr.argumentVisitor.visitNumericArgument(ctx.numericArgument())).doubleValue());
     }
 
     /**
@@ -1228,7 +1228,7 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
      */
     @Override
     public GraphTraversal visitTraversalMethod_pageRank_double(final GremlinParser.TraversalMethod_pageRank_doubleContext ctx) {
-        return graphTraversal.pageRank(((Number) antlr.argumentVisitor.visitFloatArgument(ctx.floatArgument())).doubleValue());
+        return graphTraversal.pageRank(((Number) antlr.argumentVisitor.visitNumericArgument(ctx.numericArgument())).doubleValue());
     }
 
     /**
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java
index 8c2472eebc..4c64c1804d 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java
@@ -178,7 +178,7 @@ public class ArgumentVisitorTest {
             });
         } else if (clazz.equals(Float.class)) {
             assertParsing(() -> {
-                final GremlinParser.FloatArgumentContext ctx = parser.floatArgument();
+                final GremlinParser.NumericArgumentContext ctx = parser.numericArgument();
                 return antlrToLanguage.argumentVisitor.parseNumber(ctx);
             });
         } else if (clazz.equals(String.class)) {
diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4
index 35a4b934e0..0b7a224790 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -409,7 +409,7 @@ traversalMethod_coalesce
     ;
 
 traversalMethod_coin
-    : 'coin' LPAREN floatArgument RPAREN
+    : 'coin' LPAREN numericArgument RPAREN
     ;
 
 traversalMethod_combine
@@ -668,7 +668,7 @@ traversalMethod_outV
 
 traversalMethod_pageRank
     : 'pageRank' LPAREN RPAREN #traversalMethod_pageRank_Empty
-    | 'pageRank' LPAREN floatArgument RPAREN #traversalMethod_pageRank_double
+    | 'pageRank' LPAREN numericArgument RPAREN #traversalMethod_pageRank_double
     ;
 
 traversalMethod_path
@@ -1486,8 +1486,8 @@ integerArgument
     | variable
     ;
 
-floatArgument
-    : floatLiteral
+numericArgument
+    : numericLiteral
     | variable
     ;