File tree Expand file tree Collapse file tree 3 files changed +45
-2
lines changed
csep.tests/src/csep/tests Expand file tree Collapse file tree 3 files changed +45
-2
lines changed Original file line number Diff line number Diff line change 1+ package csep.tests
2+
3+ import org.junit.Test
4+
5+ class ClassTest extends ParserTestBase {
6+
7+ @Test
8+ def void testBasic () {
9+ ok(' ' '
10+ class NicePerson extends Person
11+ firstName: "John"
12+ lastName: "Doe"
13+
14+ introduce: -> print "I am #{firstName} #{lastName}"
15+
16+ greet: (other) ->
17+ print "Hello #{other}"
18+ ' ' ' )
19+ }
20+ }
Original file line number Diff line number Diff line change @@ -56,4 +56,18 @@ class MissingFeaturesTest extends ParserTestBase {
5656 ' ' ' )
5757 ok(' a = readInfo() while true' )
5858 }
59+
60+ @Test
61+ def void testClass () {
62+ // deeply nested class name
63+ shouldBeOk(' class a.b.c' )
64+ // class declaration as expression
65+ shouldBeOk(' c = class extends Foo' )
66+ // class declaration as expression
67+ shouldBeOk(' class A extends B extends C' )
68+ // class name as property
69+ shouldBeOk(' class "str".length' )
70+ // class extends any expression
71+ shouldBeOk(' class A extends 3' )
72+ }
5973}
Original file line number Diff line number Diff line change @@ -17,14 +17,23 @@ Line:
1717
1818Stmt:
1919 ReturnStmt |
20- ThrowStmt;
20+ ThrowStmt |
21+ ClassDeclaration;
2122
2223ReturnStmt:
2324 RETURN exp=Expression;
2425
2526ThrowStmt:
2627 THROW exp=Expression;
2728
29+ ClassDeclaration:
30+ {ClassDeclaration}
31+ CLASS (
32+ body=Block |
33+ (EXTENDS extend=Expression body=Block?) |
34+ (name=(Id | Property) (EXTENDS extend=Expression)? body=Block)
35+ )?;
36+
2837Expression:
2938 Postfix;
3039
@@ -324,7 +333,7 @@ terminal RETURN: 'return';
324333terminal RPAREN: ')';
325334terminal STATEMENT: 'dummy STATEMENT';
326335terminal STRING: '"' (('a'..'z') | ' ')* '"';
327- terminal SUPER: 'dummy SUPER ';
336+ terminal SUPER: 'super ';
328337terminal SWITCH: 'dummy SWITCH';
329338terminal TERMINATOR: '\n'+;
330339terminal THEN: 'dummy THEN';
You can’t perform that action at this time.
0 commit comments