Is pragma(lib) going to be supported? I'm not in a rush or anything. :)
The other issue is that I've tried passing the library file name on command line, like so:
gdmd driver.d libwinmm.a
However gdmd won't link with libwinmm.a unless I copy the file directly to my project directory. libwinmm.a is an import library and its located by default in the /lib subdirectory of MinGW/GDC. Shouldn't GDMD automatically try to look in the /lib directory for missing library files specified on the command line?
This small program gives me an ICE with the latest binary distribution. I think the linux version works, however i will try again later.
foo a = null;
foo b = [ null, a, a ];
used like this:
D:\projectes\bug>gdc -v2 bug.d
bug.d:1:0: internal compiler error: in expand_expr_real_1, at expr.c:8481
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://bitbucket.org/goshawk/gdc/issue> for instructions.
Got debugging symbols put back into GDC. Briefly looking at the code, the assert is triggered because context is null. I'll look into it more later, unless Iain has any ideas on why it's happening.
/* from expr.c */
8474 /* Variables inherited from containing functions should have
8475 been lowered by this point. */
8476 context = decl_function_context (exp);
8477 gcc_assert (!context
8478 || context == current_function_decl
8479 || TREE_STATIC (exp)
8480 /* ??? C++ creates functions that are not TREE_STATIC. */
8481 || TREE_CODE (exp) == FUNCTION_DECL);
In [ a, null, a] I would have thought both "a" refer to the same tree. That seems to be false or DECL_CONTEXT is lost after the first use. The symbol name that triggers the assert appears to be an internal symbol DI.XXX.
This issue is not related to reference types only.
int a = 12;
int b = [a, 0, a]; // Produces the same error.