diff options
Diffstat (limited to 'source/slang/slang-check-modifier.cpp')
| -rw-r--r-- | source/slang/slang-check-modifier.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/source/slang/slang-check-modifier.cpp b/source/slang/slang-check-modifier.cpp index ab34c83dd..21d7669ce 100644 --- a/source/slang/slang-check-modifier.cpp +++ b/source/slang/slang-check-modifier.cpp @@ -984,6 +984,37 @@ namespace Slang return packOffsetModifier; } + if(auto targetIntrinsic = as<TargetIntrinsicModifier>(m)) + { + // TODO: verify that the predicate is one we understand + if(targetIntrinsic->scrutinee.name) + { + if(auto genDecl = as<ContainerDecl>(syntaxNode)) + { + auto scrutineeResults = lookUp( + m_astBuilder, + this, + targetIntrinsic->scrutinee.name, + genDecl->ownedScope); + if(!scrutineeResults.isValid()) + { + getSink()->diagnose( + targetIntrinsic->scrutinee.loc, + Diagnostics::undefinedIdentifier2, + targetIntrinsic->scrutinee.name); + } + if(scrutineeResults.isOverloaded()) + { + getSink()->diagnose( + targetIntrinsic->scrutinee.loc, + Diagnostics::ambiguousReference, + targetIntrinsic->scrutinee.name); + } + targetIntrinsic->scrutineeDeclRef = scrutineeResults.item.declRef; + } + } + } + // Default behavior is to leave things as they are, // and assume that modifiers are mostly already checked. // |
