Skip to content

Commit 7ccadf0

Browse files
authoredJan 22, 2023
fix: Diagnose not yet implemented 'in' operator (#2629)
1 parent 4535263 commit 7ccadf0

File tree

5 files changed

+25
-1
lines changed

5 files changed

+25
-1
lines changed
 

‎src/compiler.ts

+8
Original file line numberDiff line numberDiff line change
@@ -4662,6 +4662,14 @@ export class Compiler extends DiagnosticEmitter {
46624662
}
46634663
break;
46644664
}
4665+
case Token.In: {
4666+
this.error(
4667+
DiagnosticCode.Not_implemented_0,
4668+
expression.range, "'in' operator"
4669+
);
4670+
this.currentType = Type.bool;
4671+
return module.unreachable();
4672+
}
46654673
default: {
46664674
assert(false);
46674675
expr = this.module.unreachable();

‎src/parser.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -4311,7 +4311,8 @@ export class Parser extends DiagnosticEmitter {
43114311
case Token.Bar:
43124312
case Token.Caret:
43134313
case Token.Ampersand_Ampersand:
4314-
case Token.Bar_Bar: {
4314+
case Token.Bar_Bar:
4315+
case Token.In: {
43154316
let next = this.parseExpression(tn, nextPrecedence + 1);
43164317
if (!next) return null;
43174318
expr = Node.createBinaryExpression(token, expr, next, tn.range(startPos, tn.pos));

‎src/resolver.ts

+6
Original file line numberDiff line numberDiff line change
@@ -2054,6 +2054,12 @@ export class Resolver extends DiagnosticEmitter {
20542054
return Type.bool;
20552055
}
20562056

2057+
// in operator
2058+
2059+
case Token.In: {
2060+
return Type.bool;
2061+
}
2062+
20572063
// arithmetics: result is common type of LHS and RHS, preferring overloads
20582064

20592065
case Token.Plus:

‎tests/compiler/in.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"stderr": [
3+
"AS100: Not implemented: 'in' operator", "\"log\" in console",
4+
"EOF"
5+
]
6+
}

‎tests/compiler/in.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
"log" in console;
2+
3+
ERROR("EOF");

0 commit comments

Comments
 (0)
Please sign in to comment.