Skip to content

Commit

Permalink
Merge pull request #280 from tannergooding/main
Browse files Browse the repository at this point in the history
Ensure that all new kinds are being properly handled
  • Loading branch information
tannergooding committed Oct 14, 2021
2 parents d0c3be7 + cc1fa82 commit d894cac
Show file tree
Hide file tree
Showing 14 changed files with 211 additions and 4 deletions.
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

0 comments on commit d894cac

Please sign in to comment.