Difference between revisions of "Compiler error message"

From Dragon Age Toolset Wiki
Jump to: navigation, search
m (Added error)
m (Added error)
 
Line 62: Line 62:
 
# A function returns a different type from its declared return type.
 
# A function returns a different type from its declared return type.
 
# A [[void]] function is assigned to a variable.
 
# A [[void]] function is assigned to a variable.
 +
 +
;Multiple case constant statements within switch
 +
:Two or more <code>case</code> statements are using the same value. This could be due to the same symbolic constant or literal value being used multiple times, or a literal and a constant with the same value being used.
  
 
=== <span id="N">N</span> ===
 
=== <span id="N">N</span> ===

Latest revision as of 00:27, 27 April 2020

Scripting

When the compiler encounters a syntax error it aborts the process for that script and displays a compiler error message in the Log window.

There are a couple of guidelines to remember when trying to understand compiler error message:

  • The compiler reports the error when it can no longer make sense of the script: this often occurs on the line 'after the line containing the error.
  • If the script has one or more include files the error may have "while compiling <include>.nss" appended to it, however the error may be in the script being compiled rather than an include file.

Errors

The following is a list of compiler error messages that have been encountered and what caused them. It is important to be aware that the listed cause(s) may not be the only cause(s) for a particular error and therefore should be viewed as examples rather than definitions.

Contents
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

A

After compound statement at end
The double quote before the file name is missing from an #include directive.

B

Break outside of loop or case statement
[example].

D

Declaration does not match parameters
The wrong type of argument used when calling a function, e.g. a string passed into a int argument.
Declaration does not match parameters (<function>)
Too few or too many arguments used when calling a function.
Duplicate function implementation (<function>)
Two functions with the same name exist.

E

Equality test has invalid operands
[example].

F

Function definition missing parameter list
The brackets were omitted when defining a function.

I

Included file not found
  1. An include file does not exist or has not been saved.
  2. The wrong file name used or the ".nss" extension included in an #include directive.
NOTE: include files cannot not be compiled directly (attempting to do so will generate a Script must contain either a main or StartingConditional error).
Invalid declaration type
The brackets were omitted when declaring a function.

M

Mismatched types
  1. A value or variable is assigned to a variable of a different type, e.g. a string value assigned to an int varaible.
  2. A function is assigned to a variable of a different type, e.g. a [[string] function to assigned to an int variable.
  3. A function returns a different type from its declared return type.
  4. A void function is assigned to a variable.
Multiple case constant statements within switch
Two or more case statements are using the same value. This could be due to the same symbolic constant or literal value being used multiple times, or a literal and a constant with the same value being used.

N

No colon after case label
[example].
No left bracket on arg list
  1. The brackets were omitted when calling a function (without arguments).
No semicolon after expression
  1. The statement terminator (;) is missing from the end of an expression.
  2. A keyword in an expression contains a typo.
No semicolon after structure
  1. The statement terminator (;) is missing from the end of a structure definition.
Not all control paths return a value
  1. A function does not have a return statement.
  2. A logic branch in a function does not have a return statement.
  3. A function does not have an else or default case with a return function.

P

Parsing variable list
  1. The statement terminator (;) is missing from the on previous line.
  2. A line contains a rogue double-quotes mark.

S

Script must contain either a main or StartingConditional
  1. Compiled an include file directly (instead of the script including it).
  2. Used the incorrect case i.e. Main instead of main.

U

Undefined identifier (<identifier>)
  1. A variable is being used before it is defined.
  2. A string is missing its opening double-quotes mark.
Undefined structure
A struct is being used before it is defined.
Unknown state in compiler
Invalid syntax e.g. an extra comma in a list of arguments.
Unterminated string constant
  1. A string is missing its closing double-quotes mark.
  2. A line contains a rogue double-quotes mark.

V

Variable defined without type
  1. A value is being assigned to a variable before it has been declared.
  2. A variable is being assigned or passed into a function before it has been declared.
Void expression where non void required
Assigned a member of a vector which was itself a member of a struct to a variable.