summaryrefslogtreecommitdiffstats
path: root/test/D/Issues/2939_Ariovistus/Project
diff options
context:
space:
mode:
authorRussel Winder <russel@winder.org.uk>2014-04-23 18:00:51 (GMT)
committerRussel Winder <russel@winder.org.uk>2014-04-23 18:00:51 (GMT)
commit1da3ba42c01c41d85c33a5025068e09c4e97219c (patch)
tree62ee189cae943f3b1ac23a1fbca397eb97a89a85 /test/D/Issues/2939_Ariovistus/Project
parentb5c114714edc311f750bdc2730315e905b8f4fa9 (diff)
downloadSCons-1da3ba42c01c41d85c33a5025068e09c4e97219c.zip
SCons-1da3ba42c01c41d85c33a5025068e09c4e97219c.tar.gz
SCons-1da3ba42c01c41d85c33a5025068e09c4e97219c.tar.bz2
Fix Issue 2939.
Diffstat (limited to 'test/D/Issues/2939_Ariovistus/Project')
-rw-r--r--test/D/Issues/2939_Ariovistus/Project/SConstruct_template9
-rw-r--r--test/D/Issues/2939_Ariovistus/Project/test/test1/SConscript14
-rw-r--r--test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.cpp12
-rw-r--r--test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.h10
-rw-r--r--test/D/Issues/2939_Ariovistus/Project/test/test1/test1.cpp5
-rw-r--r--test/D/Issues/2939_Ariovistus/Project/test/test1/test2.d13
6 files changed, 63 insertions, 0 deletions
diff --git a/test/D/Issues/2939_Ariovistus/Project/SConstruct_template b/test/D/Issues/2939_Ariovistus/Project/SConstruct_template
new file mode 100644
index 0000000..55f02aa
--- /dev/null
+++ b/test/D/Issues/2939_Ariovistus/Project/SConstruct_template
@@ -0,0 +1,9 @@
+from os.path import join
+
+environment = Environment({})
+
+Export('environment')
+
+environment.SConscript([
+ join("test","test1", "SConscript"),
+]);
diff --git a/test/D/Issues/2939_Ariovistus/Project/test/test1/SConscript b/test/D/Issues/2939_Ariovistus/Project/test/test1/SConscript
new file mode 100644
index 0000000..53a1ca0
--- /dev/null
+++ b/test/D/Issues/2939_Ariovistus/Project/test/test1/SConscript
@@ -0,0 +1,14 @@
+Import('environment')
+
+env = Environment()
+env.SharedLibrary(target='stuff', source=['stuff.cpp'])
+
+env = Environment()
+env.Append(LIBPATH=['.'])
+env.Append(LIBS=['stuff'])
+env.Program(target='test1', source=['test1.cpp'])
+
+env = environment.Clone()
+env.Append(LIBPATH=['.'])
+env.Append(LIBS=['stuff'])
+env.Program(target='test2', source=['test2.d'])
diff --git a/test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.cpp b/test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.cpp
new file mode 100644
index 0000000..2970549
--- /dev/null
+++ b/test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.cpp
@@ -0,0 +1,12 @@
+#include "stuff.h"
+
+X::X() {
+ this->i = 1;
+}
+int X::y(){
+ return this->i;
+}
+
+X *SomeX() {
+ return new X();
+}
diff --git a/test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.h b/test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.h
new file mode 100644
index 0000000..863c330
--- /dev/null
+++ b/test/D/Issues/2939_Ariovistus/Project/test/test1/stuff.h
@@ -0,0 +1,10 @@
+
+class X {
+ public:
+ int i;
+
+ X();
+ int y();
+};
+
+X *SomeX();
diff --git a/test/D/Issues/2939_Ariovistus/Project/test/test1/test1.cpp b/test/D/Issues/2939_Ariovistus/Project/test/test1/test1.cpp
new file mode 100644
index 0000000..f4d7208
--- /dev/null
+++ b/test/D/Issues/2939_Ariovistus/Project/test/test1/test1.cpp
@@ -0,0 +1,5 @@
+#include "stuff.h"
+
+int main() {
+ X *x = SomeX();
+}
diff --git a/test/D/Issues/2939_Ariovistus/Project/test/test1/test2.d b/test/D/Issues/2939_Ariovistus/Project/test/test1/test2.d
new file mode 100644
index 0000000..4fbfa4d
--- /dev/null
+++ b/test/D/Issues/2939_Ariovistus/Project/test/test1/test2.d
@@ -0,0 +1,13 @@
+import std.stdio;
+
+struct X {
+}
+
+extern(C) int _ZN1X1yEv(X* _this);
+extern(C) X* _Z5SomeXv();
+
+void main() {
+ X *x = _Z5SomeXv();
+ int i = _ZN1X1yEv(x);
+ writeln("i: ", i);
+}