summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2017-10-31 04:26:06 -0400
committerYong He <yonghe@outlook.com>2017-10-31 04:26:06 -0400
commit436c906a36fc7ff4f767d303cb5824995cd117d8 (patch)
tree5bc263b475f738db48c6f19ac26cd869232a62d2 /source
parent84f381cc180b3176d6a58da4085ee8470f246922 (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.h5
-rw-r--r--source/slang/parser.cpp38
-rw-r--r--source/slang/syntax.cpp27
-rw-r--r--source/slang/type-defs.h23
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