Skip to content

Commit

Permalink
[clang][IFS] Adding support for new clang interface stubs decl types.
Browse files Browse the repository at this point in the history
NamespaceAliasDecl UnresolvedUsingTypenameDecl CXXDeductionGuideDecl
ConstructorUsingShadowDecl

Differential Revision: https://reviews.llvm.org/D70728
  • Loading branch information
plotfi committed Dec 5, 2019
1 parent e1a7d04 commit 07e4451
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 0 deletions.
4 changes: 4 additions & 0 deletions clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp
Expand Up @@ -195,6 +195,10 @@ class InterfaceStubFunctionsConsumer : public ASTConsumer {
case Decl::Kind::TemplateTemplateParm:
case Decl::Kind::ClassTemplatePartialSpecialization:
case Decl::Kind::IndirectField:
case Decl::Kind::ConstructorUsingShadow:
case Decl::Kind::CXXDeductionGuide:
case Decl::Kind::NamespaceAlias:
case Decl::Kind::UnresolvedUsingTypename:
return true;
case Decl::Kind::Var: {
// Bail on any VarDecl that either has no named symbol.
Expand Down
12 changes: 12 additions & 0 deletions clang/test/InterfaceStubs/constructor-using-shadow.cpp
@@ -0,0 +1,12 @@
// RUN: %clang_cc1 -o - -emit-interface-stubs %s | FileCheck %s

// CHECK: --- !experimental-ifs-v1
// CHECK-NEXT: IfsVersion: 1.0
// CHECK-NEXT: Triple:
// CHECK-NEXT: ObjectFileFormat: ELF
// CHECK-NEXT: Symbols:
// CHECK-NEXT: ...

// ConstructorUsingShadowDecl
struct Base { Base(int); };
struct Derived : public Base { using Base::Base; };
12 changes: 12 additions & 0 deletions clang/test/InterfaceStubs/cxxdeduction-guide.cpp
@@ -0,0 +1,12 @@
// RUN: %clang_cc1 -o - -emit-interface-stubs -std=c++17 %s | FileCheck %s

// CHECK: --- !experimental-ifs-v1
// CHECK-NEXT: IfsVersion: 1.0
// CHECK-NEXT: Triple:
// CHECK-NEXT: ObjectFileFormat: ELF
// CHECK-NEXT: Symbols:
// CHECK-NEXT: ...

// CXXDeductionGuideDecl
template<typename T> struct A { A(); A(T); };
A() -> A<int>;
12 changes: 12 additions & 0 deletions clang/test/InterfaceStubs/namespace-alias.cpp
@@ -0,0 +1,12 @@
// RUN: %clang_cc1 -o - -emit-interface-stubs %s | FileCheck %s

// CHECK: --- !experimental-ifs-v1
// CHECK-NEXT: IfsVersion: 1.0
// CHECK-NEXT: Triple:
// CHECK-NEXT: ObjectFileFormat: ELF
// CHECK-NEXT: Symbols:
// CHECK-NEXT: ...

// NamespaceAliasDecl
namespace NS { }
namespace B = NS;
12 changes: 12 additions & 0 deletions clang/test/InterfaceStubs/unresolved-using-typename.cpp
@@ -0,0 +1,12 @@
// RUN: %clang_cc1 -o - -emit-interface-stubs %s | FileCheck %s

// CHECK: --- !experimental-ifs-v1
// CHECK-NEXT: IfsVersion: 1.0
// CHECK-NEXT: Triple:
// CHECK-NEXT: ObjectFileFormat: ELF
// CHECK-NEXT: Symbols:
// CHECK-NEXT: ...

// UnresolvedUsingTypenameDecl
template<typename T> class C1 { using ReprType = unsigned; };
template<typename T> class C2 : public C1<T> { using typename C1<T>::Repr; };

0 comments on commit 07e4451

Please sign in to comment.