[Issue 2862] ICE(template.c) using type tuple as function argument
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Oct 23 01:01:18 PDT 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2862
Don <clugdbug at yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
Summary|ICE: assert |ICE(template.c) using type
|template.c(4048) |tuple as function argument
|global.errors |
--- Comment #2 from Don <clugdbug at yahoo.com.au> 2009-10-23 01:01:17 PDT ---
Root cause: should not be able to use a type as a function parameter.
Currently, error messages are generated in the back-end, but some cases are
missed. This moves the error message to the front-end where it belongs.
---
Example of backend error now moved to front-end:
void foo(int x){}
alias int BAD;
void main(){
foo(BAD);
}
---
And also note that non-type tuples are OK as function parameters. This test
case still passes.
int foo(T...)(T t) { return t[0]+t[1]; }
template bug(T...){
int x = foo(T) + 4;
}
void main(){
int z = bug!(1, 2).x;
assert(z==7);
}
---
Index: expression.c
===================================================================
--- expression.c (revision 215)
+++ expression.c (working copy)
@@ -462,7 +462,10 @@
for (size_t i = 0; i < exps->dim; i++)
{ Expression *arg = (Expression *)exps->data[i];
-
+ if (arg->op == TOKtype)
+ { arg->error("type %s is not an expression", arg->toChars());
+ arg = new IntegerExp(arg->loc, 0, Type::tint32);
+ }
if (!arg->type)
{
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list