On Monday, 7 June 2021 at 09:29:08 UTC, tastyminerals wrote:
I getting
```
import/core/sync/mutex.d(87,36): Error:
`pthread_mutexattr_init` cannot be interpreted at compile time,
because it has no available source code
```
compile time error. One of those D exceptions which doesn't say
where it happened in your code so you need to comment out the
lines that might cause it one by one :D
I found that this was caused by the "FileLogger" which I create
at the top of the file. But why?
You can't initialize classes at module scope. You can declare
them, but then they must be initialized in a function or a module
constructor. Normally for a type `MyClass` in module `foo`, you'd
see an error like this:
```D
Error: variable `foo.MyClass` is a thread-local class and cannot
have a static initializer. Use `static this()` to initialize
instead.
```
I guess CTFE runs before the check that catches this, though, and
the `FileLogger` constructor ultimately triggers the error your
seeing.