strangely silent compiler

Orfeo dlang at orfeo.fastmail.com
Wed Aug 21 14:19:05 UTC 2019


On Wednesday, 21 August 2019 at 13:56:51 UTC, Eugene Wissner 
wrote:
> On Wednesday, 21 August 2019 at 13:41:20 UTC, Orfeo wrote:
>> I've:
>> ```
>> module anomalo.util;
>>
>> // Foo doesn't exist  anywhere!!!!!
>>
>> Foo toJsJson(string type, Args...)(string id, Args args) {
>>    static if (type == "int" || type == "outcome") {
>>       return Json(["id" : Json(id), "type" : Json(type), 
>> "value" : Json(0),]);
>>    } else {
>>       static assert(0, "invalid type");
>>    }
>> }
>>
>> ```
>>
>> So:
>> ```
>> $ dub build
>> ```
>> No error!
>>
>> ```
>> $ /usr/bin/dmd -lib -ofliba.a -debug -g -w -I. 
>> src/anomalo/util.d -vcolumns
>> ```
>>
>> No error!
>>
>> Here [github](https://github.com/o3o/anomalo) my project.
>>
>> Thank you
>
> toJsJson is a template. Templates are evaluated first when they 
> are instantiated. Compiler doesn't give an error because it 
> doesn't compile toJsJson, because you don't instantiate it 
> anywhere.

You're right: if I add (into util.d)

```
unittest {
    import std.stdio;
    writeln(toJsJson!"int"("a"));
}
```


voila' :
```
$ dub test

src/anomalo/util.d(3,5): Error: undefined identifier Foo
src/anomalo/util.d(13,26): Error: template instance 
`anomalo.util.toJsJson!"int"` error instantiating
/usr/bin/dmd failed with exit code 1.
```

Thank you


More information about the Digitalmars-d-learn mailing list