Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure that all new kinds are being properly handled #280

Merged
merged 1 commit into from
Oct 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 47 additions & 1 deletion sources/ClangSharp/Cursors/Attrs/Attr.cs

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion sources/ClangSharp/Cursors/Decls/Decl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ public bool IsStdNamespace

internal static new Decl Create(CXCursor handle) => handle.DeclKind switch
{
CX_DeclKind.CX_DeclKind_Invalid => new Decl(handle, handle.kind, handle.DeclKind),
CX_DeclKind.CX_DeclKind_AccessSpec => new AccessSpecDecl(handle),
CX_DeclKind.CX_DeclKind_Block => new BlockDecl(handle),
CX_DeclKind.CX_DeclKind_Captured => new CapturedDecl(handle),
Expand All @@ -158,7 +159,10 @@ public bool IsStdNamespace
CX_DeclKind.CX_DeclKind_Friend => new FriendDecl(handle),
CX_DeclKind.CX_DeclKind_FriendTemplate => new FriendTemplateDecl(handle),
CX_DeclKind.CX_DeclKind_Import => new ImportDecl(handle),
CX_DeclKind.CX_DeclKind_LifetimeExtendedTemporary => new LifetimeExtendedTemporaryDecl(handle),
CX_DeclKind.CX_DeclKind_LinkageSpec => new LinkageSpecDecl(handle),
CX_DeclKind.CX_DeclKind_Using => new UsingDecl(handle),
CX_DeclKind.CX_DeclKind_UsingEnum => new UsingEnumDecl(handle),
CX_DeclKind.CX_DeclKind_Label => new LabelDecl(handle),
CX_DeclKind.CX_DeclKind_Namespace => new NamespaceDecl(handle),
CX_DeclKind.CX_DeclKind_NamespaceAlias => new NamespaceAliasDecl(handle),
Expand Down Expand Up @@ -187,7 +191,7 @@ public bool IsStdNamespace
CX_DeclKind.CX_DeclKind_TypeAlias => new TypeAliasDecl(handle),
CX_DeclKind.CX_DeclKind_Typedef => new TypedefDecl(handle),
CX_DeclKind.CX_DeclKind_UnresolvedUsingTypename => new UnresolvedUsingTypenameDecl(handle),
CX_DeclKind.CX_DeclKind_Using => new UsingDecl(handle),
CX_DeclKind.CX_DeclKind_UnresolvedUsingIfExists => new UnresolvedUsingIfExistsDecl(handle),
CX_DeclKind.CX_DeclKind_UsingDirective => new UsingDirectiveDecl(handle),
CX_DeclKind.CX_DeclKind_UsingPack => new UsingPackDecl(handle),
CX_DeclKind.CX_DeclKind_UsingShadow => new UsingShadowDecl(handle),
Expand All @@ -213,15 +217,18 @@ public bool IsStdNamespace
CX_DeclKind.CX_DeclKind_VarTemplatePartialSpecialization => new VarTemplatePartialSpecializationDecl(handle),
CX_DeclKind.CX_DeclKind_EnumConstant => new EnumConstantDecl(handle),
CX_DeclKind.CX_DeclKind_IndirectField => new IndirectFieldDecl(handle),
CX_DeclKind.CX_DeclKind_MSGuid => new MSGuidDecl(handle),
CX_DeclKind.CX_DeclKind_OMPDeclareMapper => new OMPDeclareMapperDecl(handle),
CX_DeclKind.CX_DeclKind_OMPDeclareReduction => new OMPDeclareReductionDecl(handle),
CX_DeclKind.CX_DeclKind_TemplateParamObject => new TemplateParamObjectDecl(handle),
CX_DeclKind.CX_DeclKind_UnresolvedUsingValue => new UnresolvedUsingValueDecl(handle),
CX_DeclKind.CX_DeclKind_OMPAllocate => new OMPAllocateDecl(handle),
CX_DeclKind.CX_DeclKind_OMPRequires => new OMPRequiresDecl(handle),
CX_DeclKind.CX_DeclKind_OMPThreadPrivate => new OMPThreadPrivateDecl(handle),
CX_DeclKind.CX_DeclKind_ObjCPropertyImpl => new ObjCPropertyImplDecl(handle),
CX_DeclKind.CX_DeclKind_PragmaComment => new PragmaCommentDecl(handle),
CX_DeclKind.CX_DeclKind_PragmaDetectMismatch => new PragmaDetectMismatchDecl(handle),
CX_DeclKind.CX_DeclKind_RequiresExprBody => new RequiresExprBodyDecl(handle),
CX_DeclKind.CX_DeclKind_StaticAssert => new StaticAssertDecl(handle),
CX_DeclKind.CX_DeclKind_TranslationUnit => new TranslationUnitDecl(handle),
_ => new Decl(handle, handle.kind, handle.DeclKind),
Expand Down
15 changes: 15 additions & 0 deletions sources/ClangSharp/Cursors/Exprs/SYCLUniqueStableNameExpr.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using System;
using System.Diagnostics;
using ClangSharp.Interop;

namespace ClangSharp
{
public sealed class SYCLUniqueStableNameExpr : Expr
{
internal SYCLUniqueStableNameExpr(CXCursor handle) : base(handle, CXCursorKind.CXCursor_UnexposedExpr, CX_StmtClass.CX_StmtClass_SYCLUniqueStableNameExpr)
{
}
}
}
13 changes: 13 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPCanonicalLoop.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using ClangSharp.Interop;

namespace ClangSharp
{
public sealed class OMPCanonicalLoop : Stmt
{
internal OMPCanonicalLoop(CXCursor handle) : base(handle, CXCursorKind.CXCursor_OMPCanonicalLoop, CX_StmtClass.CX_StmtClass_OMPCanonicalLoop)
{
}
}
}
13 changes: 13 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPDispatchDirective.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using ClangSharp.Interop;

namespace ClangSharp
{
public sealed class OMPDispatchDirective : OMPExecutableDirective
{
internal OMPDispatchDirective(CXCursor handle) : base(handle, CXCursorKind.CXCursor_OMPDispatchDirective, CX_StmtClass.CX_StmtClass_OMPDispatchDirective)
{
}
}
}
13 changes: 13 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPInteropDirective.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using ClangSharp.Interop;

namespace ClangSharp
{
public sealed class OMPInteropDirective : OMPExecutableDirective
{
internal OMPInteropDirective(CXCursor handle) : base(handle, CXCursorKind.CXCursor_OMPInteropDirective, CX_StmtClass.CX_StmtClass_OMPInteropDirective)
{
}
}
}
18 changes: 18 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPLoopBasedDirective.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using System;
using ClangSharp.Interop;

namespace ClangSharp
{
public class OMPLoopBasedDirective : OMPExecutableDirective
{
private protected OMPLoopBasedDirective(CXCursor handle, CXCursorKind expectedCursorKind, CX_StmtClass expectedStmtClass) : base(handle, expectedCursorKind, expectedStmtClass)
{
if (handle.StmtClass is > CX_StmtClass.CX_StmtClass_LastOMPLoopBasedDirective or < CX_StmtClass.CX_StmtClass_FirstOMPLoopBasedDirective)
{
throw new ArgumentOutOfRangeException(nameof(handle));
}
}
}
}
14 changes: 14 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPLoopTransformationDirective.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using System;
using ClangSharp.Interop;

namespace ClangSharp
{
public class OMPLoopTransformationDirective : OMPLoopBasedDirective
{
private protected OMPLoopTransformationDirective(CXCursor handle, CXCursorKind expectedCursorKind, CX_StmtClass expectedStmtClass) : base(handle, expectedCursorKind, expectedStmtClass)
{
}
}
}
13 changes: 13 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPMaskedDirective.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using ClangSharp.Interop;

namespace ClangSharp
{
public sealed class OMPMaskedDirective : OMPExecutableDirective
{
internal OMPMaskedDirective(CXCursor handle) : base(handle, CXCursorKind.CXCursor_OMPMaskedDirective, CX_StmtClass.CX_StmtClass_OMPMaskedDirective)
{
}
}
}
13 changes: 13 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPTileDirective.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using ClangSharp.Interop;

namespace ClangSharp
{
public sealed class OMPTileDirective : OMPLoopTransformationDirective
{
internal OMPTileDirective(CXCursor handle) : base(handle, CXCursorKind.CXCursor_OMPTileDirective, CX_StmtClass.CX_StmtClass_OMPTileDirective)
{
}
}
}
13 changes: 13 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/OMPUnrollDirective.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft and Contributors. All rights reserved. Licensed under the University of Illinois/NCSA Open Source License. See LICENSE.txt in the project root for license information.

using ClangSharp.Interop;

namespace ClangSharp
{
public sealed class OMPUnrollDirective : OMPLoopTransformationDirective
{
internal OMPUnrollDirective(CXCursor handle) : base(handle, CXCursorKind.CXCursor_OMPUnrollDirective, CX_StmtClass.CX_StmtClass_OMPUnrollDirective)
{
}
}
}
23 changes: 23 additions & 0 deletions sources/ClangSharp/Cursors/Stmts/Stmt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ public Stmt StripLabelLikeStatements()

internal static new Stmt Create(CXCursor handle) => handle.StmtClass switch
{
CX_StmtClass.CX_StmtClass_Invalid => new Stmt(handle, handle.Kind, handle.StmtClass),
CX_StmtClass.CX_StmtClass_GCCAsmStmt => new GCCAsmStmt(handle),
CX_StmtClass.CX_StmtClass_MSAsmStmt => new MSAsmStmt(handle),
CX_StmtClass.CX_StmtClass_BreakStmt => new BreakStmt(handle),
Expand All @@ -134,20 +135,28 @@ public Stmt StripLabelLikeStatements()
CX_StmtClass.CX_StmtClass_IndirectGotoStmt => new IndirectGotoStmt(handle),
CX_StmtClass.CX_StmtClass_MSDependentExistsStmt => new MSDependentExistsStmt(handle),
CX_StmtClass.CX_StmtClass_NullStmt => new NullStmt(handle),
CX_StmtClass.CX_StmtClass_OMPCanonicalLoop => new OMPCanonicalLoop(handle),
CX_StmtClass.CX_StmtClass_OMPAtomicDirective => new OMPAtomicDirective(handle),
CX_StmtClass.CX_StmtClass_OMPBarrierDirective => new OMPBarrierDirective(handle),
CX_StmtClass.CX_StmtClass_OMPCancelDirective => new OMPCancelDirective(handle),
CX_StmtClass.CX_StmtClass_OMPCancellationPointDirective => new OMPCancellationPointDirective(handle),
CX_StmtClass.CX_StmtClass_OMPCriticalDirective => new OMPCriticalDirective(handle),
CX_StmtClass.CX_StmtClass_OMPDepobjDirective => new OMPDepobjDirective(handle),
CX_StmtClass.CX_StmtClass_OMPDispatchDirective => new OMPDispatchDirective(handle),
CX_StmtClass.CX_StmtClass_OMPFlushDirective => new OMPFlushDirective(handle),
CX_StmtClass.CX_StmtClass_OMPInteropDirective => new OMPInteropDirective(handle),
CX_StmtClass.CX_StmtClass_OMPDistributeDirective => new OMPDistributeDirective(handle),
CX_StmtClass.CX_StmtClass_OMPDistributeParallelForDirective => new OMPDistributeParallelForDirective(handle),
CX_StmtClass.CX_StmtClass_OMPDistributeParallelForSimdDirective => new OMPDistributeParallelForSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPDistributeSimdDirective => new OMPDistributeSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPForDirective => new OMPForDirective(handle),
CX_StmtClass.CX_StmtClass_OMPForSimdDirective => new OMPForSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPMasterTaskLoopDirective => new OMPMasterTaskLoopDirective(handle),
CX_StmtClass.CX_StmtClass_OMPMasterTaskLoopSimdDirective => new OMPMasterTaskLoopSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPParallelForDirective => new OMPParallelForDirective(handle),
CX_StmtClass.CX_StmtClass_OMPParallelForSimdDirective => new OMPParallelForSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPParallelMasterTaskLoopDirective => new OMPParallelMasterTaskLoopDirective(handle),
CX_StmtClass.CX_StmtClass_OMPParallelMasterTaskLoopSimdDirective => new OMPParallelMasterTaskLoopSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPSimdDirective => new OMPSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPTargetParallelForSimdDirective => new OMPTargetParallelForSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPTargetSimdDirective => new OMPTargetSimdDirective(handle),
Expand All @@ -161,10 +170,15 @@ public Stmt StripLabelLikeStatements()
CX_StmtClass.CX_StmtClass_OMPTeamsDistributeParallelForDirective => new OMPTeamsDistributeParallelForDirective(handle),
CX_StmtClass.CX_StmtClass_OMPTeamsDistributeParallelForSimdDirective => new OMPTeamsDistributeParallelForSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPTeamsDistributeSimdDirective => new OMPTeamsDistributeSimdDirective(handle),
CX_StmtClass.CX_StmtClass_OMPTileDirective => new OMPTileDirective(handle),
CX_StmtClass.CX_StmtClass_OMPUnrollDirective => new OMPUnrollDirective(handle),
CX_StmtClass.CX_StmtClass_OMPMaskedDirective => new OMPMaskedDirective(handle),
CX_StmtClass.CX_StmtClass_OMPMasterDirective => new OMPMasterDirective(handle),
CX_StmtClass.CX_StmtClass_OMPOrderedDirective => new OMPOrderedDirective(handle),
CX_StmtClass.CX_StmtClass_OMPParallelDirective => new OMPParallelDirective(handle),
CX_StmtClass.CX_StmtClass_OMPParallelMasterDirective => new OMPParallelMasterDirective(handle),
CX_StmtClass.CX_StmtClass_OMPParallelSectionsDirective => new OMPParallelSectionsDirective(handle),
CX_StmtClass.CX_StmtClass_OMPScanDirective => new OMPScanDirective(handle),
CX_StmtClass.CX_StmtClass_OMPSectionDirective => new OMPSectionDirective(handle),
CX_StmtClass.CX_StmtClass_OMPSectionsDirective => new OMPSectionsDirective(handle),
CX_StmtClass.CX_StmtClass_OMPSingleDirective => new OMPSingleDirective(handle),
Expand Down Expand Up @@ -223,6 +237,7 @@ public Stmt StripLabelLikeStatements()
CX_StmtClass.CX_StmtClass_CXXNoexceptExpr => new CXXNoexceptExpr(handle),
CX_StmtClass.CX_StmtClass_CXXNullPtrLiteralExpr => new CXXNullPtrLiteralExpr(handle),
CX_StmtClass.CX_StmtClass_CXXPseudoDestructorExpr => new CXXPseudoDestructorExpr(handle),
CX_StmtClass.CX_StmtClass_CXXRewrittenBinaryOperator => new CXXRewrittenBinaryOperator(handle),
CX_StmtClass.CX_StmtClass_CXXScalarValueInitExpr => new CXXScalarValueInitExpr(handle),
CX_StmtClass.CX_StmtClass_CXXStdInitializerListExpr => new CXXStdInitializerListExpr(handle),
CX_StmtClass.CX_StmtClass_CXXThisExpr => new CXXThisExpr(handle),
Expand All @@ -238,6 +253,7 @@ public Stmt StripLabelLikeStatements()
CX_StmtClass.CX_StmtClass_BuiltinBitCastExpr => new BuiltinBitCastExpr(handle),
CX_StmtClass.CX_StmtClass_CStyleCastExpr => new CStyleCastExpr(handle),
CX_StmtClass.CX_StmtClass_CXXFunctionalCastExpr => new CXXFunctionalCastExpr(handle),
CX_StmtClass.CX_StmtClass_CXXAddrspaceCastExpr => new CXXAddrspaceCastExpr(handle),
CX_StmtClass.CX_StmtClass_CXXConstCastExpr => new CXXConstCastExpr(handle),
CX_StmtClass.CX_StmtClass_CXXDynamicCastExpr => new CXXDynamicCastExpr(handle),
CX_StmtClass.CX_StmtClass_CXXReinterpretCastExpr => new CXXReinterpretCastExpr(handle),
Expand All @@ -247,6 +263,7 @@ public Stmt StripLabelLikeStatements()
CX_StmtClass.CX_StmtClass_CharacterLiteral => new CharacterLiteral(handle),
CX_StmtClass.CX_StmtClass_ChooseExpr => new ChooseExpr(handle),
CX_StmtClass.CX_StmtClass_CompoundLiteralExpr => new CompoundLiteralExpr(handle),
CX_StmtClass.CX_StmtClass_ConceptSpecializationExpr => new ConceptSpecializationExpr(handle),
CX_StmtClass.CX_StmtClass_ConvertVectorExpr => new ConvertVectorExpr(handle),
CX_StmtClass.CX_StmtClass_CoawaitExpr => new CoawaitExpr(handle),
CX_StmtClass.CX_StmtClass_CoyieldExpr => new CoyieldExpr(handle),
Expand All @@ -272,9 +289,12 @@ public Stmt StripLabelLikeStatements()
CX_StmtClass.CX_StmtClass_MSPropertyRefExpr => new MSPropertyRefExpr(handle),
CX_StmtClass.CX_StmtClass_MSPropertySubscriptExpr => new MSPropertySubscriptExpr(handle),
CX_StmtClass.CX_StmtClass_MaterializeTemporaryExpr => new MaterializeTemporaryExpr(handle),
CX_StmtClass.CX_StmtClass_MatrixSubscriptExpr => new MatrixSubscriptExpr(handle),
CX_StmtClass.CX_StmtClass_MemberExpr => new MemberExpr(handle),
CX_StmtClass.CX_StmtClass_NoInitExpr => new NoInitExpr(handle),
CX_StmtClass.CX_StmtClass_OMPArraySectionExpr => new OMPArraySectionExpr(handle),
CX_StmtClass.CX_StmtClass_OMPArrayShapingExpr => new OMPArrayShapingExpr(handle),
CX_StmtClass.CX_StmtClass_OMPIteratorExpr => new OMPIteratorExpr(handle),
CX_StmtClass.CX_StmtClass_ObjCArrayLiteral => new ObjCArrayLiteral(handle),
CX_StmtClass.CX_StmtClass_ObjCAvailabilityCheckExpr => new ObjCAvailabilityCheckExpr(handle),
CX_StmtClass.CX_StmtClass_ObjCBoolLiteralExpr => new ObjCBoolLiteralExpr(handle),
Expand All @@ -299,6 +319,9 @@ public Stmt StripLabelLikeStatements()
CX_StmtClass.CX_StmtClass_ParenListExpr => new ParenListExpr(handle),
CX_StmtClass.CX_StmtClass_PredefinedExpr => new PredefinedExpr(handle),
CX_StmtClass.CX_StmtClass_PseudoObjectExpr => new PseudoObjectExpr(handle),
CX_StmtClass.CX_StmtClass_RecoveryExpr => new RecoveryExpr(handle),
CX_StmtClass.CX_StmtClass_RequiresExpr => new RequiresExpr(handle),
CX_StmtClass.CX_StmtClass_SYCLUniqueStableNameExpr => new SYCLUniqueStableNameExpr(handle),
CX_StmtClass.CX_StmtClass_ShuffleVectorExpr => new ShuffleVectorExpr(handle),
CX_StmtClass.CX_StmtClass_SizeOfPackExpr => new SizeOfPackExpr(handle),
CX_StmtClass.CX_StmtClass_SourceLocExpr => new SourceLocExpr(handle),
Expand Down
Loading