DreamFXLang
Diagnostics

DFX1xxx — Driver and file I/O

Every DFX1xxx diagnostic, with its severity, verbatim message, cause and fix.

6 codes in this family (6 error). The message is the format string as the compiler holds it: %s, %d and %c are substituted at runtime.

DFX1000

errorraised byParser/DreamFXParser.cpp:1837

Could not read source file '%s'.

Cause. The path does not exist, or the process cannot read it. A from reference and a -File= argument both land here.

Fix. Check the path. Relative from paths resolve against the referencing file first, then against every DFX root.

DFX1001

errorraised byParser/DreamFXLexer.cpp:304

Unterminated string literal.

Cause. A quoted string ran to the end of the line without a closing quote.

Fix. Close the quote. DreamFX strings do not span lines.

DFX1002

errorraised byParser/DreamFXLexer.cpp:127

Unterminated block comment.

Cause. A /* was never closed.

Fix. Add the */. The reported position is where the comment started, not where the file ended.

DFX1003

errorraised byParser/DreamFXLexer.cpp:335

Unexpected character '%c' (U+%04X).

Cause. A character that is not part of the language appeared outside a string, comment or raw block. Smart quotes pasted from a document are the usual cause.

Fix. Delete it. The code point is printed so a look-alike character is identifiable.

DFX1004

errorraised byParser/DreamFXLexer.cpp:488

Unterminated raw block: missing '}'.

Cause. A raw block -- hlsl { }, Body = { } -- was opened and never closed. Raw blocks are brace-balanced, so an unbalanced brace inside the HLSL runs the block to end of file.

Fix. Balance the braces inside the block.

DFX1005

errorraised byParser/DreamFXLexer.cpp:185Parser/DreamFXLexer.cpp:198

Unterminated back-quoted name. A `name` must close on the same line.

Cause. A back-quote opened a name that never closed before the end of the line, or closed immediately with nothing between the quotes.

A back-quoted name is how the language holds a Niagara name it could not otherwise spell — `PillarPower(0~1)`, `Ring/DiscDistributionMode`. Names never span lines, so a missing closing quote is reported at the end of the line rather than swallowing the rest of the file.

Fix. Close the quote. If the name itself contains a back-quote there is no way to write it: the escape would need an escape, and nothing in Niagara produces one — rename the parameter instead.

Back-quotes are only needed when the name is not already an identifier. `Speed` is legal but noise; write Speed. The decompiler applies exactly that rule, so a re-export is the quickest way to see which names need quoting.

On this page