summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-modifier.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-modifier.cpp')
-rw-r--r--source/slang/slang-check-modifier.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/slang/slang-check-modifier.cpp b/source/slang/slang-check-modifier.cpp
index a7fb641a2..a2b411c22 100644
--- a/source/slang/slang-check-modifier.cpp
+++ b/source/slang/slang-check-modifier.cpp
@@ -226,6 +226,19 @@ namespace Slang
attrDecl->parentDecl = parentDecl;
parentDecl->members.add(attrDecl);
+ SLANG_ASSERT(!parentDecl->isMemberDictionaryValid());
+
+ // TODO(JS): A bit of a work around(!)
+ //
+ // To get to this point we must have already have performed a lookup for attributeName,
+ // and it failed. That lookup used the TypeCheckingCache, and
+ // so we know there is a cache entry that will be *wrong*, now we have created and
+ // added the AttributeDecl with the attributeName.
+ //
+ // To work around, we remove all cached lookups around the name, such that when a subsequent
+ // lookup is made, the cache will not return the old (wrong) result.
+ removeLookupForName(getLinkage()->getTypeCheckingCache(), attributeName);
+
// Finally, we perform any required semantic checks on
// the newly constructed attribute decl.
//