Skip to content

Commit 992eabd

Browse files
committed
Merge branch '3.8-dev'
2 parents 751cf3e + 73d09b5 commit 992eabd

3 files changed

Lines changed: 48 additions & 0 deletions

File tree

AGENTS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ These rules apply to any AI/IDE assistant operating on this repository.
3232
- Update or add tests when behavior changes.
3333
- Update documentation and/or changelog when you change public behavior or APIs.
3434
- Follow existing patterns for code structure, documentation layout, and naming.
35+
- If code is ready, stop and ask to commit, push or merge manually.
3536

3637
### Don't
3738

@@ -41,6 +42,9 @@ These rules apply to any AI/IDE assistant operating on this repository.
4142
- Don't introduce new external dependencies, modules, or build plugins without discussion.
4243
- Don't invent project policies, version numbers, or release names.
4344
- Don't remove or weaken tests to "fix" failures; adjust the implementation or test data instead.
45+
- Don't push to any branch.
46+
- Don't merge any PR or branch.
47+
- Don't create tags or releases.
4448

4549
### When In Doubt
4650

docs/src/dev/developer/for-committers.asciidoc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,16 @@ value, causing the map pattern to consume part of the surrounding bracket syntax
437437
set-of-sets) and nesting of scalar types (vertices, edges, numbers, strings) inside lists or sets works as
438438
expected.
439439
440+
When using this syntax, it is important to remember that lists and sets may contain other lists or sets as elements,
441+
allowing for nested collection notation such as `l[l[d[1].i,d[2].i],l[d[3].i,d[4].i]]`. The step definitions across all
442+
language variants parse these correctly by tracking bracket depth so that commas inside inner brackets are not treated
443+
as top-level separators. However, mixed-type nesting is not supported — a list or set may not contain a map as a direct
444+
element (e.g. `l[m[{"name":"marko"}]]` will not parse correctly). This limitation exists because the type notation
445+
matchers are applied in order using substring matching, and the `m[...]` matcher fires before `l[...]` on the outer
446+
value, causing the map pattern to consume part of the surrounding bracket syntax. Same-type nesting (list-of-lists,
447+
set-of-sets) and nesting of scalar types (vertices, edges, numbers, strings) inside lists or sets works as
448+
expected.
449+
440450
In addition, parameter names should adhere to a common form as they hold some meaning to certain language variant
441451
implementations:
442452

gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23283,6 +23283,40 @@
2328323283
}
2328423284
]
2328523285
},
23286+
{
23287+
"scenario": "g_injectXlist1_list2X_fold",
23288+
"traversals": [
23289+
{
23290+
"original": "g.inject([1, 2], [3, 4]).fold()",
23291+
"language": "g.inject([1, 2], [3, 4]).fold()",
23292+
"canonical": "g.inject([1, 2], [3, 4]).fold()",
23293+
"anonymized": "g.inject(list0, list1).fold()",
23294+
"dotnet": "g.Inject<object>(new List<object> { 1, 2 }, new List<object> { 3, 4 }).Fold()",
23295+
"go": "g.Inject([]interface{}{1, 2}, []interface{}{3, 4}).Fold()",
23296+
"groovy": "g.inject([1, 2], [3, 4]).fold()",
23297+
"java": "g.inject(new ArrayList<Object>() {{ add(1); add(2); }}, new ArrayList<Object>() {{ add(3); add(4); }}).fold()",
23298+
"javascript": "g.inject([1, 2], [3, 4]).fold()",
23299+
"python": "g.inject([1, 2], [3, 4]).fold()"
23300+
}
23301+
]
23302+
},
23303+
{
23304+
"scenario": "g_injectXlist1_list2_list3X_fold",
23305+
"traversals": [
23306+
{
23307+
"original": "g.inject([1, 2], [3, 4], [5, 6]).fold()",
23308+
"language": "g.inject([1, 2], [3, 4], [5, 6]).fold()",
23309+
"canonical": "g.inject([1, 2], [3, 4], [5, 6]).fold()",
23310+
"anonymized": "g.inject(list0, list1, list2).fold()",
23311+
"dotnet": "g.Inject<object>(new List<object> { 1, 2 }, new List<object> { 3, 4 }, new List<object> { 5, 6 }).Fold()",
23312+
"go": "g.Inject([]interface{}{1, 2}, []interface{}{3, 4}, []interface{}{5, 6}).Fold()",
23313+
"groovy": "g.inject([1, 2], [3, 4], [5, 6]).fold()",
23314+
"java": "g.inject(new ArrayList<Object>() {{ add(1); add(2); }}, new ArrayList<Object>() {{ add(3); add(4); }}, new ArrayList<Object>() {{ add(5); add(6); }}).fold()",
23315+
"javascript": "g.inject([1, 2], [3, 4], [5, 6]).fold()",
23316+
"python": "g.inject([1, 2], [3, 4], [5, 6]).fold()"
23317+
}
23318+
]
23319+
},
2328623320
{
2328723321
"scenario": "g_VX1X_formatXstrX",
2328823322
"traversals": [

0 commit comments

Comments
 (0)