2 REQUIRED_ARGS: -HC -c -o-
6 // Automatically generated by Digital Mars D Compiler
15 #ifdef CUSTOM_D_ARRAY_TYPE
16 #define _d_dynamicArray CUSTOM_D_ARRAY_TYPE
18 /// Represents a D [] array
20 struct _d_dynamicArray final
25 _d_dynamicArray() : length(0), ptr(NULL) { }
27 _d_dynamicArray(size_t length_in, T *ptr_in)
28 : length(length_in), ptr(ptr_in) { }
30 T& operator[](const size_t idx) {
35 const T& operator[](const size_t idx) const {
42 typedef uint$?:32=32|64=64$_t size_t;
49 typedef int32_t Nested;
64 enum : int32_t { SomeOtherLength = 1 };
66 struct ActualBuffer final
76 // Ignoring var x alignment 0
78 // Ignoring var Enum alignment 0
79 enum : int32_t { Enum = 42 };
81 // Ignoring var GsharedNum alignment 0
82 static int32_t GsharedNum;
83 // Ignoring var MemNum alignment 0
92 struct NotInstantiated final
94 // Ignoring var noInit alignment 0
95 // Ignoring var missingSem alignment 0
113 template <typename T>
116 // Ignoring var val alignment 0
123 template <typename T>
126 // Ignoring var v alignment 0
133 template <typename T>
137 typedef typeof(1 + 2) Int;
138 typedef typeof(T::a) IC;
142 template <typename T>
144 // Ignoring var i alignment 0
145 typename T::Member i;
146 // Ignoring var j alignment 0
147 typename Outer::Member::Nested j;
148 void visit(typename T::Member::Nested i);
154 template <typename T, typename U>
157 extern A<A<int32_t > > aaint;
159 template <typename T>
162 // Ignoring var parentMember alignment 0
166 virtual void parentVirtual();
169 template <typename T>
170 class Child final : public Parent<T >
172 // Ignoring var childMember alignment 0
175 void parentVirtual();
179 extern void withDefTempl(A<int32_t > a = A<int32_t >(2, 13));
181 template <typename T>
182 extern void withDefTempl2(A<T > a = static_cast<A<T >>(A<T >(2)));
184 class ChildInt : public Parent<int32_t >
188 struct HasMixins final
196 template <typename T>
197 struct HasMixinsTemplate final
205 extern HasMixinsTemplate<bool > hmti;
207 template <typename T>
210 // Ignoring var length alignment 0
211 enum : int32_t { length = 12 };
213 // Ignoring var buffer alignment 0
215 // Ignoring var otherBuffer alignment 0
216 T otherBuffer[SomeOtherLength];
217 // Ignoring var calcBuffer alignment 0
218 T calcBuffer[foo(1)];
224 template <typename Buffer>
225 struct BufferTmpl final
227 // Ignoring var buffer alignment 0
229 // Ignoring var buffer2 alignment 0
236 struct ImportedBuffer final
238 typedef ActualBuffer Buffer;
239 ActualBuffer buffer2;
247 extern (C
++) struct A(T
)
251 __gshared GsharedNum
= 43;
252 immutable MemNum
= 13;
256 // Invalid declarations accepted because it's not instantiated
257 extern (C
++) struct NotInstantiated(T
)
260 enum missingSem
= T
.init
;
263 extern (C
++) struct B
268 // https://issues.dlang.org/show_bug.cgi?id=20604
282 extern (C
++) struct Array(T
)
284 alias This
= typeof(this);
285 alias Int
= typeof(1 + 2);
286 alias IC
= typeof(T
.a
);
288 this(size_t dim
) pure nothrow {}
293 bool opCast(T
)() const pure nothrow @nogc @safe
296 return str.ptr
!is null;
300 Outer
.Member
.Nested j
;
301 void visit(T
.Member
.Nested i
) {}
313 // alias AO = Array!Outer;
315 extern(C
++) T
foo(T
, U
)(U u
) { return T
.init
; }
317 extern(C
++) __gshared A
!(A
!int) aaint
;
319 extern(C
++) class Parent(T
)
322 final void parentFinal() {}
323 void parentVirtual() {}
326 extern(C
++) final class Child(T
) : Parent
!T
329 override void parentVirtual() {}
330 T
childFinal() { return T
.init
; }
333 extern(C
++) void withDefTempl(A
!int a
= A
!int(2)) {}
335 extern(C
++) void withDefTempl2(T
)(A
!T a
= A
!T(2)) {}
337 extern(C
++) alias withDefTempl2Inst
= withDefTempl2
!int;
339 extern(C
++) class ChildInt
: Parent
!int {}
341 /******************************************************
347 mixin template MixinA(T
)
352 mixin template MixinB() {}
360 struct HasMixinsTemplate(T
)
366 __gshared HasMixinsTemplate
!bool hmti
;
368 /// Declarations that look like associative arrays
370 extern(D
) enum SomeOtherLength
= 1;
378 T
[SomeOtherLength
] otherBuffer
;
379 T
[foo(1)] calcBuffer
;
382 // Same name but hidden by the template paramter
383 extern (D
) struct Buffer
{}
384 extern (D
) struct ActualBuffer
{}
386 struct BufferTmpl(Buffer
)
389 mixin BufferMixin
!();
392 struct ImportedBuffer
394 alias Buffer
= ActualBuffer
;
395 mixin BufferMixin
!();
398 mixin template BufferMixin()