summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-impl.h
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-04-01 15:56:02 -0700
committerGitHub <noreply@github.com>2024-04-01 15:56:02 -0700
commit2c4f9810327d58023e9ec44f579cd78adf56317b (patch)
treeb5498a74bd7d01fd2e4c321a0d2e551d5f024d6d /source/slang/slang-check-impl.h
parent65ac9f3a9ddcb8bcfc099ffb29beaa9a92ba1f53 (diff)
Allow bit operators on enum types. (#3862)
* Allow bit operators on enum types. * Fix.
Diffstat (limited to 'source/slang/slang-check-impl.h')
-rw-r--r--source/slang/slang-check-impl.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/source/slang/slang-check-impl.h b/source/slang/slang-check-impl.h
index 945618f36..002ef1f71 100644
--- a/source/slang/slang-check-impl.h
+++ b/source/slang/slang-check-impl.h
@@ -1612,9 +1612,9 @@ namespace Slang
CallableDecl* synthesized,
List<Expr*>& synArgs);
- FuncDecl* synthesizeMethodSignatureForRequirementWitness(
+ FunctionDeclBase* synthesizeMethodSignatureForRequirementWitness(
ConformanceCheckingContext* context,
- DeclRef<FuncDecl> requiredMemberDeclRef,
+ DeclRef<FunctionDeclBase> requiredMemberDeclRef,
List<Expr*>& synArgs,
ThisExpr*& synThis);
@@ -1729,6 +1729,12 @@ namespace Slang
DeclRef<AssocTypeDecl> requirementDeclRef,
RefPtr<WitnessTable> witnessTable);
+ /// Attempt to synthesize function requirements for enum types to make them conform to `ILogical`.
+ bool trySynthesizeEnumTypeMethodRequirementWitness(ConformanceCheckingContext* context,
+ DeclRef<FunctionDeclBase> requirementDeclRef,
+ RefPtr<WitnessTable> witnessTable,
+ BuiltinRequirementKind requirementKind);
+
struct DifferentiableMemberInfo
{
Decl* memberDecl;
@@ -2751,6 +2757,8 @@ namespace Slang
bool isUnsizedArrayType(Type* type);
+ EnumDecl* isEnumType(Type* type);
+
DeclVisibility getDeclVisibility(Decl* decl);
void diagnoseCapabilityProvenance(DiagnosticSink* sink, Decl* decl, CapabilityAtom missingAtom);