From 436c906a36fc7ff4f767d303cb5824995cd117d8 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 31 Oct 2017 04:26:06 -0400 Subject: Revert "work in-progress, add parsing for assoc type decls and member type expressions" This reverts commit 84f381cc180b3176d6a58da4085ee8470f246922. --- source/slang/decl-defs.h | 5 ----- source/slang/parser.cpp | 38 +++----------------------------------- source/slang/syntax.cpp | 27 --------------------------- source/slang/type-defs.h | 23 ----------------------- 4 files changed, 3 insertions(+), 90 deletions(-) (limited to 'source') 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 ParseAssocType(Parser * parser, void *) - { - RefPtr 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** ioModifierLink, RefPtr modifier) { @@ -1411,16 +1396,6 @@ namespace Slang return genericApp; } - static RefPtr parseMemberType(Parser * parser, RefPtr base) - { - RefPtr 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 parsePostfixTypeSuffix( Parser* parser, @@ -1477,16 +1452,9 @@ namespace Slang RefPtr 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(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 ""; - } - - bool AssocTypeDeclRefType::EqualsImpl(Type * type) - { - if (auto assocTypeDeclRefType = type->As()) - { - 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, declRef) - RAW( - AssocTypeDeclRefType() - {} - AssocTypeDeclRefType( - DeclRef declRef) - : declRef(declRef) - {} - - - DeclRef 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 -- cgit v1.2.3