mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Parsing and basic checking for abstract class and base class. (#3385)
For now, we require the same introducer to be used each time a class is declared, but see #3384. --------- Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
co-authored by
Jon Ross-Perkins
parent
49591d1360
commit
2715e2276e
@@ -225,7 +225,7 @@ CARBON_PARSE_NODE_KIND_BRACKET(LetDecl, LetIntroducer,
|
||||
|
||||
// `var` and `returned var`:
|
||||
// VariableIntroducer
|
||||
// _optional_ ReturnedSpecifier
|
||||
// _optional_ ReturnedModifier
|
||||
// _external_: PatternBinding
|
||||
// _optional_ VariableInitializer
|
||||
// _optional_ _external_: expression
|
||||
@@ -236,7 +236,7 @@ CARBON_PARSE_NODE_KIND_BRACKET(LetDecl, LetIntroducer,
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(VariableIntroducer, 0,
|
||||
CARBON_TOKEN(Var)
|
||||
CARBON_IF_ERROR(CARBON_TOKEN(Returned)))
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ReturnedSpecifier, 0, CARBON_TOKEN(Returned))
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ReturnedModifier, 0, CARBON_TOKEN(Returned))
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(VariableInitializer, 0, CARBON_TOKEN(Equal))
|
||||
CARBON_PARSE_NODE_KIND_BRACKET(VariableDecl, VariableIntroducer,
|
||||
CARBON_TOKEN(Semi)
|
||||
@@ -267,11 +267,11 @@ CARBON_PARSE_NODE_KIND_CHILD_COUNT(ContinueStatement, 1,
|
||||
|
||||
// `return`:
|
||||
// ReturnStatementStart
|
||||
// _optional_ ReturnVarSpecifier or _external_: expression
|
||||
// _optional_ ReturnVarModifier or _external_: expression
|
||||
// ReturnStatement
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ReturnStatementStart, 0,
|
||||
CARBON_TOKEN(Return))
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ReturnVarSpecifier, 0, CARBON_TOKEN(Var))
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ReturnVarModifier, 0, CARBON_TOKEN(Var))
|
||||
CARBON_PARSE_NODE_KIND_BRACKET(ReturnStatement, ReturnStatementStart,
|
||||
CARBON_TOKEN(Semi)
|
||||
CARBON_IF_ERROR(CARBON_TOKEN(Return)))
|
||||
@@ -532,6 +532,7 @@ CARBON_PARSE_NODE_KIND_BRACKET(StructTypeLiteral,
|
||||
|
||||
// `class`:
|
||||
// ClassIntroducer
|
||||
// _optional_ AbstractModifier or BaseModifier
|
||||
// _external_: Name or QualifiedDecl
|
||||
// ClassDefinitionStart
|
||||
// _external_: declarations
|
||||
@@ -541,6 +542,8 @@ CARBON_PARSE_NODE_KIND_BRACKET(StructTypeLiteral,
|
||||
// ClassDefinitionStart and later nodes are removed and replaced by
|
||||
// ClassDecl.
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ClassIntroducer, 0, CARBON_TOKEN(Class))
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(AbstractModifier, 0, CARBON_TOKEN(Abstract))
|
||||
CARBON_PARSE_NODE_KIND_CHILD_COUNT(BaseModifier, 0, CARBON_TOKEN(Base))
|
||||
CARBON_PARSE_NODE_KIND_BRACKET(ClassDefinitionStart, ClassIntroducer,
|
||||
CARBON_TOKEN(OpenCurlyBrace))
|
||||
CARBON_PARSE_NODE_KIND_BRACKET(ClassDefinition, ClassDefinitionStart,
|
||||
|
||||
Reference in New Issue
Block a user