blob: 505ffdc49988977f5dcc74ec0d227c0f1a26764d [file] [log] [blame]
/*
REQUIRED_ARGS: -HC=verbose -o- -Icompilable/extra-files
PERMUTE_ARGS:
EXTRA_FILES: extra-files/dtoh_imports.d extra-files/dtoh_imports2.d
TEST_OUTPUT:
---
// Automatically generated by Digital Mars D Compiler v$n$
#pragma once
#include <assert.h>
#include <stddef.h>
#include <stdint.h>
#include <math.h>
#ifdef CUSTOM_D_ARRAY_TYPE
#define _d_dynamicArray CUSTOM_D_ARRAY_TYPE
#else
/// Represents a D [] array
template<typename T>
struct _d_dynamicArray final
{
size_t length;
T *ptr;
_d_dynamicArray() : length(0), ptr(NULL) { }
_d_dynamicArray(size_t length_in, T *ptr_in)
: length(length_in), ptr(ptr_in) { }
T& operator[](const size_t idx) {
assert(idx < length);
return ptr[idx];
}
const T& operator[](const size_t idx) const {
assert(idx < length);
return ptr[idx];
}
};
#endif
extern void importFunc();
// Ignored function dtoh_verbose.foo because of linkage
// Ignored variable dtoh_verbose.i because of linkage
// Ignored function dtoh_verbose.bar because of linkage
// Ignored struct dtoh_verbose.S because of linkage
// Ignored class dtoh_verbose.C because of linkage
// Ignored function dtoh_verbose.bar because it is extern
// Ignored variable dtoh_verbose.i1 because of linkage
// Ignored template dtoh_verbose.templ(T)(T t) because of linkage
// Ignored alias dtoh_verbose.inst because of linkage
// Ignored enum dtoh_verbose.arrayOpaque because of its base type
// Ignored renamed import `myFunc = importFunc` because `using` only supports types
struct A final
{
// Ignored renamed import `myFunc = importFunc` because `using` only supports types
A()
{
}
};
struct Hidden final
{
// Ignored function dtoh_verbose.Hidden.hidden because it is private
Hidden()
{
}
};
// Ignored alias dtoh_verbose.D because of linkage
class Visitor
{
public:
virtual void stat();
// Ignored dtoh_verbose.Visitor.bar because `using` cannot rename functions in aggregates
// Ignored dtoh_verbose.Visitor.unused because free functions cannot be aliased in C++
};
extern void unused();
// Ignored variable dtoh_verbose.and because its name is a special operator in C++
template <typename T>
struct FullImportTmpl final
{
// Ignored `dtoh_imports` because it's inside of a template declaration
FullImportTmpl()
{
}
};
template <typename T>
struct SelectiveImportsTmpl final
{
// Ignored `__anonymous` because it's inside of a template declaration
SelectiveImportsTmpl()
{
}
};
---
*/
void foo() {}
extern (D) {
int i;
}
void bar();
struct S {}
class C {}
extern(C++) void bar();
int i1;
void templ(T)(T t) {}
alias inst = templ!int;
extern(C++)
enum arrayOpaque : int[4];
public import dtoh_imports : myFunc = importFunc;
extern(C++) struct A
{
public import dtoh_imports : myFunc = importFunc;
}
extern(C++) struct Hidden
{
private void hidden() {}
}
private {
enum PI = 4;
}
alias D = size_t delegate (size_t x);
extern(C++) T foo(T) = T.init;
extern(C++) class Visitor
{
void stat() {}
// Ignored because those cannot be represented in C++
alias bar = stat;
alias unused = .unused;
}
extern(C++) void unused() {}
extern(C++) __gshared bool and;
extern(C++) struct FullImportTmpl(T)
{
public import dtoh_imports;
}
extern(C++) struct SelectiveImportsTmpl(T)
{
public import dtoh_imports :
importFunc,
aliasName = ImportsC;
}