Skip to content

Commit

Permalink
Expand coverage to include ExpressionCall, ExpressionInitOf and Expre…
Browse files Browse the repository at this point in the history
…ssionStaticCall
  • Loading branch information
vitorpy committed Mar 21, 2024
1 parent 42b1d55 commit ae10d4e
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 10 deletions.
6 changes: 3 additions & 3 deletions src/grammar/grammar.ohm
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,11 @@ Tact {
| ExpressionString
ExpressionString = stringLiteral
ExpressionField = ExpressionValue "." id ~"("
ExpressionCall = ExpressionValue "." id "(" ListOf<Expression, ","> ")"
ExpressionCall = ExpressionValue "." id "(" ListOf<Expression, ","> ","? ")"
ExpressionNew = id "{" ListOf<NewParameter, ","> ","? "}"
NewParameter = id ":" Expression
ExpressionStaticCall = id "(" ListOf<Expression, ","> ")"
ExpressionInitOf = initOf id "(" ListOf<Expression, ","> ")"
ExpressionStaticCall = id "(" ListOf<Expression, ","> ","? ")"
ExpressionInitOf = initOf id "(" ListOf<Expression, ","> ","? ")"

// Type Literal
typeLiteral = letterAsciiUC typeLiteralPart*
Expand Down
6 changes: 3 additions & 3 deletions src/grammar/grammar.ohm-bundle.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,11 @@ export interface TactActionDict<T> extends ActionDict<T> {
ExpressionValue?: (this: NonterminalNode, arg0: NonterminalNode) => T;
ExpressionString?: (this: NonterminalNode, arg0: NonterminalNode) => T;
ExpressionField?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
ExpressionCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode) => T;
ExpressionCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode) => T;
ExpressionNew?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: IterationNode, arg4: TerminalNode) => T;
NewParameter?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
ExpressionStaticCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T;
ExpressionInitOf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: TerminalNode) => T;
ExpressionStaticCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: IterationNode, arg4: TerminalNode) => T;
ExpressionInitOf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: IterationNode, arg5: TerminalNode) => T;
typeLiteral?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T;
typeLiteralPart?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T;
integerLiteral?: (this: NonterminalNode, arg0: NonterminalNode) => T;
Expand Down
2 changes: 1 addition & 1 deletion src/grammar/grammar.ohm-bundle.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/grammar/grammar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -706,10 +706,10 @@ semantics.addOperation<ASTNode>('resolve_expression', {
ExpressionField(arg0, _arg1, arg2) {
return createNode({ kind: 'op_field', src: arg0.resolve_expression(), name: arg2.sourceString, ref: createRef(this) });
},
ExpressionCall(arg0, _arg1, arg2, _arg3, arg4, _arg5) {
ExpressionCall(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6) {
return createNode({ kind: 'op_call', src: arg0.resolve_expression(), name: arg2.sourceString, args: arg4.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) });
},
ExpressionStaticCall(arg0, _arg1, arg2, _arg3) {
ExpressionStaticCall(arg0, _arg1, arg2, _arg3, _arg4) {
return createNode({ kind: 'op_static_call', name: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) });
},
ExpressionNew(arg0, _arg1, arg2, _arg3, _arg4) {
Expand All @@ -718,7 +718,7 @@ semantics.addOperation<ASTNode>('resolve_expression', {
NewParameter(arg0, _arg1, arg2) {
return createNode({ kind: 'new_parameter', name: arg0.sourceString, exp: arg2.resolve_expression(), ref: createRef(this) });
},
ExpressionInitOf(_arg0, arg1, _arg2, arg3, _arg4) {
ExpressionInitOf(_arg0, arg1, _arg2, arg3, _arg4, _arg5) {
return createNode({ kind: 'init_of', name: arg1.sourceString, args: arg3.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) });
},

Expand Down
7 changes: 7 additions & 0 deletions src/grammar/test/case-25.tact
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ fun anotherFunction(
return (a >> b) || (a << (32 - b));
}

fun coverage(a: Int, b: Int) {
let c: Int = anotherFunction(
a,
b,
);
}

fun oneMoreFunction(
a: Int,
b: Int,
Expand Down

0 comments on commit ae10d4e

Please sign in to comment.