summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-decl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-decl.cpp')
-rw-r--r--source/slang/slang-check-decl.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp
index 28db66c45..25f535825 100644
--- a/source/slang/slang-check-decl.cpp
+++ b/source/slang/slang-check-decl.cpp
@@ -1712,7 +1712,7 @@ namespace Slang
{
if (auto varDeclRefType = as<DeclRefType>(varDecl->type.type))
{
- parentAggTypeDecl->unionTagsWith(getTypeTags(varDecl->type.type));
+ parentAggTypeDecl->unionTagsWith(getTypeTags(varDeclRefType));
}
}
@@ -9321,20 +9321,21 @@ namespace Slang
else if (as<PrivateModifier>(modifier))
return DeclVisibility::Private;
}
-
// Interface members will always have the same visibility as the interface itself.
if (auto interfaceDecl = findParentInterfaceDecl(decl))
{
return getDeclVisibility(interfaceDecl);
}
- else if (as<NamespaceDecl>(decl))
+ auto defaultVis = DeclVisibility::Default;
+ if (auto parentModule = getModuleDecl(decl))
+ defaultVis = parentModule->isInLegacyLanguage ? DeclVisibility::Public : DeclVisibility::Internal;
+
+ // Members of other agg type decls will have their default visibility capped to the parents'.
+ if (as<NamespaceDecl>(decl))
{
return DeclVisibility::Public;
}
- if (auto parentModule = getModuleDecl(decl))
- return parentModule->isInLegacyLanguage ? DeclVisibility::Public : DeclVisibility::Internal;
-
- return DeclVisibility::Default;
+ return defaultVis;
}
void diagnoseCapabilityProvenance(DiagnosticSink* sink, Decl* decl, CapabilityAtom missingAtom)