Files
swift-mirror/test/Interop/Cxx/class/inline-function-codegen/Inputs/constructor-calls-function.h
Alex 93c4c621b7 [cxx-interop] Walk initializer decls when walking constructor decls (#41584)
This addresses SR-15272.

When you have a function (e.g. 'foo') which is used in a constructor
initializer (e.g. constructor of some class 'Bar'), and you use the
constructor from swift code without directly using the function (e.g.
Bar's ctor is used from swift but foo isn't, foo is used from Bar's ctor),
you will get a link error. My fix is as follows:

When walking the clangAST to be imported, make sure you look at each
CXXCtorInitializer for each CXXConstructorDecl you see.
2022-03-14 09:56:55 -07:00

29 lines
722 B
C++

#ifndef TEST_INTEROP_CXX_CLASS_INLINE_FUNCTION_THROUGH_MEMBER_INPUTS_CONSTRUCTOR_CALLS_FUNCTION_H
#define TEST_INTEROP_CXX_CLASS_INLINE_FUNCTION_THROUGH_MEMBER_INPUTS_CONSTRUCTOR_CALLS_FUNCTION_H
inline int increment(int t) { return t + 1; }
struct Incrementor {
int incrementee;
Incrementor(int value) : incrementee(increment(value)) {}
};
inline int callConstructor(int value) { return Incrementor(value).incrementee; }
inline int get42() { return 42; }
template <typename T>
T passThroughArgT(T t) {
return t;
}
struct Hold42 {
int m = get42();
};
struct Hold23 {
int m = passThroughArgT<int>(23);
};
#endif // TEST_INTEROP_CXX_CLASS_INLINE_FUNCTION_THROUGH_MEMBER_INPUTS_CONSTRUCTOR_CALLS_FUNCTION_H