diff --git a/bindgen/ir/IR.cpp b/bindgen/ir/IR.cpp index ebbd4e8..b971b64 100644 --- a/bindgen/ir/IR.cpp +++ b/bindgen/ir/IR.cpp @@ -80,9 +80,7 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &s, const IR &ir) { } for (const auto &varDefine : ir.varDefines) { - s << " @name(\"" << varDefine.getVarName() << "\")\n" - << " def " << varDefine.getName() << ": " << varDefine.getType() - << " = native.extern\n"; + s << varDefine; } for (const auto &func : ir.functions) { diff --git a/bindgen/ir/VarDefine.cpp b/bindgen/ir/VarDefine.cpp index 7c6bc2c..aebe9ee 100644 --- a/bindgen/ir/VarDefine.cpp +++ b/bindgen/ir/VarDefine.cpp @@ -7,3 +7,11 @@ VarDefine::VarDefine(std::string name, std::string varName, std::string type) std::string VarDefine::getVarName() const { return varName; } std::string VarDefine::getType() const { return type; } + +llvm::raw_ostream &operator<<(llvm::raw_ostream &s, + const VarDefine &varDefine) { + s << " @name(\"" << varDefine.getVarName() << "\")\n" + << " val " << varDefine.getName() << ": " << varDefine.getType() + << " = native.extern\n"; + return s; +} diff --git a/bindgen/ir/VarDefine.h b/bindgen/ir/VarDefine.h index fe05287..6a7cdb9 100644 --- a/bindgen/ir/VarDefine.h +++ b/bindgen/ir/VarDefine.h @@ -2,6 +2,7 @@ #define SCALA_NATIVE_BINDGEN_VARDEFINE_H #include "Define.h" +#include class VarDefine : public Define { public: @@ -11,6 +12,9 @@ class VarDefine : public Define { std::string getType() const; + friend llvm::raw_ostream &operator<<(llvm::raw_ostream &s, + const VarDefine &varDefine); + private: std::string varName; std::string type; diff --git a/tests/samples/VarDefine.c b/tests/samples/VarDefine.c index 59f69fc..0bb9376 100644 --- a/tests/samples/VarDefine.c +++ b/tests/samples/VarDefine.c @@ -1,5 +1,3 @@ #include "VarDefine.h" int a = 23; - -int getA() { return a; } diff --git a/tests/samples/VarDefine.h b/tests/samples/VarDefine.h index 86d2818..8e9e0a5 100644 --- a/tests/samples/VarDefine.h +++ b/tests/samples/VarDefine.h @@ -9,5 +9,3 @@ extern int c; extern float f; #define __PRIVATE f // should be filtered - -int getA(); diff --git a/tests/samples/VarDefine.scala b/tests/samples/VarDefine.scala index badd4f6..bb32284 100644 --- a/tests/samples/VarDefine.scala +++ b/tests/samples/VarDefine.scala @@ -7,6 +7,5 @@ import scala.scalanative.native._ @native.extern object VarDefine { @name("a") - def A: native.CInt = native.extern - def getA(): native.CInt = native.extern + val A: native.CInt = native.extern } diff --git a/tests/samples/src/test/scala/org/scalanative/bindgen/samples/VarDefineTests.scala b/tests/samples/src/test/scala/org/scalanative/bindgen/samples/VarDefineTests.scala index 778b966..4480323 100644 --- a/tests/samples/src/test/scala/org/scalanative/bindgen/samples/VarDefineTests.scala +++ b/tests/samples/src/test/scala/org/scalanative/bindgen/samples/VarDefineTests.scala @@ -5,7 +5,7 @@ import utest._ object VarDefineTests extends TestSuite { val tests = Tests { 'getA - { - assert(VarDefine.getA() == 23) + assert(VarDefine.A == 23) } } }