On Friday, 15 September 2017 at 15:48:10 UTC, Stefan Koch wrote:
are you using ucent ?

Not that I know of, the code above is the full code (not sure what's used internally for string literals).

I was using dmd 2.076 from the apt repo but the error also happens in LDC 1.3[1].

Is there an easy way for me to test newCTFE?

The reduced version to get the same error is:

```
struct Content{string[] parts;}

void main(){
    enum Content content = {};
    content.parts ~= "";
}
```

Strange (for a CTFE noob like me anyway) thing is the following code produces no error or warning. (obviously it doesn't do what it looks like it does)

```
struct Content{
    string[] parts;
    void add(string s)(){
        parts ~= "Part: "~s;
    }
}

void main(){
    enum Content content = {};
    content.add!("Header")();
}
```

I would have thought both the code in the OP and the above two codes should produce a warning pointing out that using a compile time value like that has no useful effect. As this would be useful information for noobs like me...

Actually now that I think about it there could be a "valid" use.. ie if the add function set global state... does this even work... (checks) ... yes it does... so I guess a warning cant really happen then.


[1] Here is the LDC backtrace:

ldc2: /build/ldc-6CClyQ/ldc-1.3.0/gen/dvalue.cpp:43: llvm::Value* DtoLVal(DValue*): Assertion `lval' failed. #0 0x00007f1d568658a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1+0x76e8a8) #1 0x00007f1d56863786 llvm::sys::RunSignalHandlers() (/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1+0x76c786) #2 0x00007f1d568638e5 (/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1+0x76c8e5) #3 0x00007f1d55ce2670 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11670) #4 0x00007f1d5509977f gsignal /build/glibc-mXZSwJ/glibc-2.24/signal/../sysdeps/unix/sysv/linux/raise.c:58:0 #5 0x00007f1d5509b37a abort /build/glibc-mXZSwJ/glibc-2.24/stdlib/abort.c:91:0 #6 0x00007f1d55091b47 __assert_fail_base /build/glibc-mXZSwJ/glibc-2.24/assert/assert.c:92:0
#7 0x00007f1d55091bf2 (/lib/x86_64-linux-gnu/libc.so.6+0x2dbf2)
#8 0x00005644df8d2310 (ldc2+0x3cb310)
...
#25 0x00005644df909370 (ldc2+0x402370)
#26 0x00007f1d550843f1 __libc_start_main /build/glibc-mXZSwJ/glibc-2.24/csu/../csu/libc-start.c:325:0
#27 0x00005644df6538ea (ldc2+0x14c8ea)
Aborted (core dumped)
ldc2 failed with exit code 134.


Reply via email to