syntax: add safe call syntax `x?.foo`
[nit.git] / src / parser / parser_nodes.nit
index dc3b1f7..92dbea0 100644 (file)
@@ -539,6 +539,11 @@ class TKwenum
        super TokenKeyword
 end
 
+# The keyword `subset`
+class TKwsubset
+       super TokenKeyword
+end
+
 # The keyword `end`
 class TKwend
        super TokenKeyword
@@ -978,6 +983,11 @@ class TStarship
        super TokenOperator
 end
 
+# The operator `?`
+class TQuest
+       super TokenOperator
+end
+
 # The operator `!`
 class TBang
        super TokenOperator
@@ -1073,6 +1083,11 @@ class TBadString
        end
 end
 
+# A malformed triple quoted string
+class TBadTString
+       super TBadString
+end
+
 # A malformed char
 class TBadChar
        super Token
@@ -1087,6 +1102,15 @@ class TExternCodeSegment
        super Token
 end
 
+# A malformed extern code block
+class TBadExtern
+       super Token
+       redef fun to_s
+       do
+               do return "malformed extern segment {text}"
+       end
+end
+
 # A end of file
 class EOF
        super Token
@@ -1314,6 +1338,18 @@ class AExternClasskind
        var n_kwclass: nullable TKwclass = null is writable
 end
 
+class ASubsetClasskind
+       super AClasskind
+
+       # The `subset` keyword.
+       var n_kwsubset: TKwsubset is writable, noinit
+
+       redef fun visit_all(v) do
+               # TODO: Remove this redefinition once generated from the grammar.
+               v.enter_visit(n_kwsubset)
+       end
+end
+
 # The definition of a formal generic parameter type. eg `X: Y`
 class AFormaldef
        super Prod
@@ -1375,6 +1411,9 @@ class AMethPropdef
        # The `init` keyword, if any
        var n_kwinit: nullable TKwinit = null is writable
 
+       # The `isa` keyword, if any
+       var n_kwisa: nullable TKwisa = null is writable
+
        # The `new` keyword, if any
        var n_kwnew: nullable TKwnew = null is writable
 
@@ -2716,6 +2755,17 @@ class AVarargExpr
        var n_dotdotdot: TDotdotdot is writable, noinit
 end
 
+# A receiver with a `?` suffix used in safe call operator.
+class ASafeExpr
+       super AExpr
+
+       # The expression made safe
+       var n_expr: AExpr is writable, noinit
+
+       # The `?` symbol
+       var n_quest: TQuest is writable, noinit
+end
+
 # An named notation used to pass an expression by name in a parameter
 class ANamedargExpr
        super AExpr