Skip to content

Commit

Permalink
Merge pull request #503 from aptos-labs/feat/v2_feats
Browse files Browse the repository at this point in the history
Feat(move-on-aptos): v2 features
  • Loading branch information
nmote authored Aug 8, 2024
2 parents fbbf4a3 + 656b775 commit b66e37e
Show file tree
Hide file tree
Showing 4 changed files with 781 additions and 4 deletions.
15 changes: 15 additions & 0 deletions lang/semgrep-grammars/src/semgrep-move-on-aptos/grammar.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ module.exports = grammar(base_grammar, {
choice(
$._function_signature,
$._struct_signature,
$._enum_signature,
)
),

Expand Down Expand Up @@ -215,6 +216,20 @@ module.exports = grammar(base_grammar, {
field('element', $._dot_or_index_chain), '.', $.ellipsis,
)),

// enum variant
// (e.g. `enum Foo { ..., Bar }`)
_variant: ($, previous) => choice(
previous,
$.ellipsis,
),

// match arm
// (e.g. `match foo { ..., bar => baz }`)
match_arm: ($, previous) => choice(
previous,
$.ellipsis,
),

// identifier, extended to support metavariables
identifier: ($, previous) => token(choice(
previous,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,9 +215,11 @@ module 0xdeadbeef::mod {
(identifier)
(type_params
(type_param
(identifier))
(type_param
(identifier)))
(type_param
(ellipsis)))
(type_param
(ellipsis))))
(abilities
(ability))
(body
Expand Down Expand Up @@ -503,4 +505,70 @@ let $LEFT3 = ... . ... .func(...);
(ellipsis))
(identifier)
(call_args
(ellipsis))))))
(ellipsis))))))

=======================
Vector Expression
=======================

let vec_val = vector[...];
let copied = vec_val[0] + vector[1][0];

let vec_2 = vector[1, 2, 3];

---

(source_file
(semgrep_statement
(let_expr
(bind_list
(var_name
(identifier)))
(vector_value_expr
(ellipsis)))
(let_expr
(bind_list
(var_name
(identifier)))
(bin_op_expr
(mem_access
(var
(name_access_chain
(identifier)))
(value
(number)))
(binary_operator)
(mem_access
(vector_value_expr
(value
(number)))
(value
(number)))))
(let_expr
(bind_list
(var_name
(identifier)))
(vector_value_expr
(value
(number))
(value
(number))
(value
(number))))))

=======================
Return Expression
=======================

return | a;

---

(source_file
(semgrep_statement
(bin_op_expr
(return_expr)
(binary_operator)
(var
(name_access_chain
(identifier))))))
Loading

0 comments on commit b66e37e

Please sign in to comment.