diff options
| author | Yong He <yonghe@outlook.com> | 2017-10-31 04:26:06 -0400 |
|---|---|---|
| committer | Yong He <yonghe@outlook.com> | 2017-10-31 04:26:06 -0400 |
| commit | 436c906a36fc7ff4f767d303cb5824995cd117d8 (patch) | |
| tree | 5bc263b475f738db48c6f19ac26cd869232a62d2 /source | |
| parent | 84f381cc180b3176d6a58da4085ee8470f246922 (diff) | |
Revert "work in-progress, add parsing for assoc type decls and member type expressions"
This reverts commit 84f381cc180b3176d6a58da4085ee8470f246922.
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/decl-defs.h | 5 | ||||
| -rw-r--r-- | source/slang/parser.cpp | 38 | ||||
| -rw-r--r-- | source/slang/syntax.cpp | 27 | ||||
| -rw-r--r-- | source/slang/type-defs.h | 23 |
4 files changed, 3 insertions, 90 deletions
diff --git a/source/slang/decl-defs.h b/source/slang/decl-defs.h index 4021f5a38..c96fe6d09 100644 --- a/source/slang/decl-defs.h +++ b/source/slang/decl-defs.h @@ -122,11 +122,6 @@ SYNTAX_CLASS(TypeDefDecl, SimpleTypeDecl) SYNTAX_FIELD(TypeExp, type) END_SYNTAX_CLASS() -// An 'assoctype' declaration -SYNTAX_CLASS(AssocTypeDecl, SimpleTypeDecl) - SYNTAX_FIELD(TypeExp, constraint) -END_SYNTAX_CLASS() - // A scope for local declarations (e.g., as part of a statement) SIMPLE_SYNTAX_CLASS(ScopeDecl, ContainerDecl) diff --git a/source/slang/parser.cpp b/source/slang/parser.cpp index 554eebc18..322f403e6 100644 --- a/source/slang/parser.cpp +++ b/source/slang/parser.cpp @@ -544,21 +544,6 @@ namespace Slang return typeDefDecl; } - RefPtr<RefObject> ParseAssocType(Parser * parser, void *) - { - RefPtr<AssocTypeDecl> assocTypeDecl = new AssocTypeDecl(); - - auto nameToken = parser->ReadToken(TokenType::Identifier); - assocTypeDecl->nameAndLoc = NameLoc(nameToken); - assocTypeDecl->loc = nameToken.loc; - if (parser->LookAheadToken(TokenType::Colon)) - { - auto type = parser->ParseTypeExp(); - assocTypeDecl->constraint = type; - } - return assocTypeDecl; - } - // Add a modifier to a list of modifiers being built static void AddModifier(RefPtr<Modifier>** ioModifierLink, RefPtr<Modifier> modifier) { @@ -1411,16 +1396,6 @@ namespace Slang return genericApp; } - static RefPtr<Expr> parseMemberType(Parser * parser, RefPtr<Expr> base) - { - RefPtr<MemberExpr> memberExpr = new MemberExpr(); - parser->ReadToken(TokenType::Dot); - parser->FillPosition(memberExpr.Ptr()); - memberExpr->BaseExpression = base; - memberExpr->name = expectIdentifier(parser).name; - return memberExpr; - } - // Parse option `[]` braces after a type expression, that indicate an array type static RefPtr<Expr> parsePostfixTypeSuffix( Parser* parser, @@ -1477,16 +1452,9 @@ namespace Slang RefPtr<Expr> typeExpr = basicType; - while (parser->LookAheadToken(TokenType::OpLess) || parser->LookAheadToken(TokenType::Dot)) + if (parser->LookAheadToken(TokenType::OpLess)) { - if (parser->LookAheadToken(TokenType::OpLess)) - { - typeExpr = parseGenericApp(parser, typeExpr); - } - else - { - typeExpr = parseMemberType(parser, typeExpr); - } + typeExpr = parseGenericApp(parser, typeExpr); } // GLSL allows `[]` directly in a type specifier @@ -4061,8 +4029,8 @@ namespace Slang // Add syntax for declaration keywords #define DECL(KEYWORD, CALLBACK) \ addBuiltinSyntax<Decl>(session, scope, #KEYWORD, &CALLBACK) + DECL(typedef, ParseTypeDef); - DECL(assoctype, ParseAssocType); DECL(cbuffer, parseHLSLCBufferDecl); DECL(tbuffer, parseHLSLTBufferDecl); DECL(__generic, ParseGenericDecl); diff --git a/source/slang/syntax.cpp b/source/slang/syntax.cpp index 165b2d132..6cf3fd7c9 100644 --- a/source/slang/syntax.cpp +++ b/source/slang/syntax.cpp @@ -940,33 +940,6 @@ void Type::accept(IValVisitor* visitor, void* extra) return this; } - // AssocTypeDeclRefType - - String AssocTypeDeclRefType::ToString() - { - // TODO: what is appropriate here? - return "<AssocType>"; - } - - bool AssocTypeDeclRefType::EqualsImpl(Type * type) - { - if (auto assocTypeDeclRefType = type->As<AssocTypeDeclRefType>()) - { - return declRef.Equals(assocTypeDeclRefType->declRef); - } - return false; - } - - int AssocTypeDeclRefType::GetHashCode() - { - return declRef.GetHashCode(); - } - - Type* AssocTypeDeclRefType::CreateCanonicalType() - { - return this; - } - // ArithmeticExpressionType // VectorExpressionType diff --git a/source/slang/type-defs.h b/source/slang/type-defs.h index 7648e0b87..2010d07b4 100644 --- a/source/slang/type-defs.h +++ b/source/slang/type-defs.h @@ -491,26 +491,3 @@ protected: virtual Type* CreateCanonicalType() override; ) END_SYNTAX_CLASS() - -// The "type" of an expression that references a asscoiated type decl (via 'assoctype' keyword). -SYNTAX_CLASS(AssocTypeDeclRefType, Type) - DECL_FIELD(DeclRef<AssocTypeDecl>, declRef) - RAW( - AssocTypeDeclRefType() - {} - AssocTypeDeclRefType( - DeclRef<AssocTypeDecl> declRef) - : declRef(declRef) - {} - - - DeclRef<AssocTypeDecl> const& GetDeclRef() const { return declRef; } - - virtual String ToString() override; - - protected: - virtual bool EqualsImpl(Type * type) override; - virtual int GetHashCode() override; - virtual Type* CreateCanonicalType() override; - ) -END_SYNTAX_CLASS()
\ No newline at end of file |
