There is no spoon
Compiler errors overview
From Unreal Wiki, The Unreal Engine Documentation Site
Please help improve this article or section by expanding it. Further information might be found on the talk page. |
Preprocessor errors
- Main article: preprocessor errors
A description and solution to preprocessor errors.
Subobjects errors
- Main article: subobject errors
A description and solution to subobjects errors.
Interface errors
- Main article: interface errors
A description and solution to interface errors.
Other errors
- Error, Could not load existing package file 'package path'
- Error, 'ForEach': An iterator expression is required
- After the ForEach keyword a standard function call to an iterator function is required. That iterator function could be called in the context of the current code (e.g. "foreach AllActors(...)") or within the context of some other object (e.g. "foreach WorldInfo.AllPawns(...)" calls the AllPawns iterator of the WorldInfo).
- Error, Operator '!=': Comparison will always succeed
- You probably already ensured that the values you are trying to compare are really different. In that case it would be pointless to perform exactly the same comparison again.
- Error, NameOf argument is not an identifier
- Error, Illegal character in name
- Error, Left type is incompatible with 'OPERATERNAME'
Classes
- Error, 'class': Limitor 'class name' is not a class name
- Error, Classes with config/globalconfig member variables need to specify config file.
- You used a config modifier on a variable but forgot to add the class modifier config (resulting in the default INI file for your application) or config(*name of the INI*).
- Error, Class 'localized' keyword is no longer required
- Self explanatory. The localized modifier was only necessary in early Unreal Engine 1 games, in newer generations this is automatic implied.
- Error, failed to find DependsOn/Implements class 'Class' while parsing 'Class'
- Self explanatory. However it could be that you have made a typo or that you are referencing a struct rather than a class.
- Error, Script vs. class name mismatch (ClassName/FileName)
- The name in the header of your class doesn't match the name of the UC file.
Variables
- Error, Instance variables are only allowed at class scope (use 'local'?)
- Variables are declared using the keyword local inside functions. Variables cannot be declared at state scope.
- Error, Not allowed to use 'config' with object variables
- Object variables cannot be made configurable. If you want to store a configurable class, material, sound, etc., consider storing it in a configurable string variable instead and using DynamicLoadObject() at runtime to load the configured object.
- Error, Can't assign Const variables
- Error, Variable declaration: 'idx' already defined
- trying to declare a local variable when one is defined as a function parameter. (Parameters are also local variables!)
- Error, 'RepRetry' is only allowed on struct properties
States
- Error, 'state': expecting State, got Function
- This was caused by calling a state sleep where sleep is a function of state. Im guessing any function previously defined can conflict with a state.
- Error, 'Ignores': 'Function Name' is not a function
- The Ignores statement only accepts existing functions. In other words, if you created the function within the state (instead of ignoring it), you would be able to call Super.FunctionName(...) in it.
Functions
- Error, Calling a singular function within a singular function on the same object will always fail
- A function with the singular modifier will only execute if the same object is not already executing another singular function, thus the compiler rejects direct calls to other singular functions.
- Error, Bad function definition
- This happens when you define a function with an object as the return but that object does not exist.
Arrays
- Error, Static arrays of dynamic arrays are not allowed
- A variable has been declared with array<type> AND variablename[n] at the same time.
- Error, Invalid property or function call on a dynamic array
- You might have omitted an array index expression in square brackets after the array reference. If not, see dynamic arrays for a list of (pseudo) functions and properties you can use on dynamic arrays themselves.
Typecasting
- Error, Cast from 'object name' to 'object name' is unnecessary
- Error, Cast from 'class' to 'class' will always fail
- Typecasting from one class to another is only allowed to narrow a reference of one type to a subclass of that type. Casting to a class that is not a subclass of the current type would always return None and thus is rejected by the compiler.
Unrecognized
- Error, Unrecognized type 'class name'
- Error, Unrecognized member 'variable name' in class 'class name'
- The variable does not exist in this class.
Unknown
- Error, Unknown member 'variable' in struct 'struct'
- The variable is not declared. Check if you have forgot to declare it or if you have made a typo.
- Error, Unknown Function 'function name' in 'Class package.class'
Unexpected
- Error, Unexpected 'defaultproperties'
- This seems to occur when you have an end of multi-comment preceded by a line comment on the same line. See Compiler issues. Keep in mind that you can not specify default properties in code while using the UnrealEd internal script editor. Doing so will give you this error as well. To change the default properties of a class in UnrealEd, you need to type editdefault class=classname in the command line of the editor.
Correct and Wrong example
Correct |
Wrong |
/* The quick brown fox jumps over the lazy dog */ // ... |
/* The quick brown fox jumps over the lazy dog */ // ... |
- Error, Unexpected end of file at end of Class
- Usually caused by an unmatched pair of braces, missing "}"
- Error, Unexpected '.' following 'variable name'
- accessor usage on a class scope variable that doesnt exist.
Replication
- Error, Unrecognized variable 'variable name' name in replication definition
- A name in a replication condition does not correspond to any existing variable or (prior to Unreal Engine 3) function within the same class.
Conflicts
- Error, 'Function Name' conflicts with 'Function Package.Class:FunctionName'
- Error, Redefinition of 'function FUNCNAME' differs from original in CLASSNAME
- You either want to override a function but the number or type of parameters in the definition of the parent class differs from your redefinition, or you accidentally chose a name for your function that is already used by a super class, so you will wish to choose another unambiguous name.
Bad or missing expression
- Error, Bad or missing expression in parenthesis for '='
- Error, Bad or missing expression in parenthesis for Following '&&'
- Error, Bad or missing expression in 'If'
- a function in an if statement does not return a type.
- Error, Bad or missing expression in Call to 'Function', parameter number
- Error, Bad or missing expression for token: 'Variable', in 'If'
- To note in this case the variable was an actor reference.
- Error, Bad or missing expression after 'OPERATORNAME'
- Error, Bad or missing expression after 'OPERATORNAME': 'VARIABLENAME'
- + being an incorrect operator usage? '&&'
- Error, 'type' conversion: Bad or missing expression
- Error, Bad or missing expression in 'NameOf'
- Error, 'class name': Bad command or expression
Missing
- Error, Missing 'function'
- Declared a function modifier without a function, defined a function type before function.
Correct and Wrong example
Correct |
Wrong |
final function int FuncName() |
final int FuncName() or final int function FuncName() |
- Error, Missing ')' in 'foreach array'
- The variable inside the brackets of a foreach loop is not defined.
- Error, Missing ';' before 'variable name'
- The variable you are trying to access through a typecast is not defined.
- Error, Missing ';' before ')'
- End of line expected before the character.
Correct and Wrong example
Correct |
Wrong |
... { a = b; } |
... { a = b } |
- Error, ImportText (struct): Missing closing parenthesis:(member1='value',member2='value'))
- Error, Missing variable name
- Pretty sure this is caused by using a class limitor on an interface like so, var interface<goo> foo;
Static Functions
- Error, Can't call instance functions from within static functions
- Static functions can only call other static functions directly. Additionally this can happen if you are trying to call a non-static function via the "Class.static.FunctionName" call modifier.
- Error, You can only access default values of variables here
- Tried to assign a non default variable a value, using a non default variable in a statement, assigning a variable a value from another that is not a default variable. There are instances where you can access non default variables in Static functions, if the variable is part of the function definition, a local variable.
Mismatch
- Error, Call to 'FUNCTIONNAME': type mismatch in parameter NUMBER
- Error, Type mismatch in Call to 'FUNCTIONNAME', parameter number
- the type of variable being passed to the function
parameter number specified is incorrect.
- Error, Type mismatch in '='
- you probably wanted to make a boolean compare "==" but ended up assigning something to a variable.
- Error, Const mismatch with '+'
- Error, Type mismatch in array index
Warnings
- Warning, Unresolved reference to Class 'class name'
- Warning, Unresolved reference to object
- Warning, Function parameter: 'function name' conflicts with previously defined field in 'class name'
- Warning, function: Missing return value
- a function with a return type has no 'return' that could be reached, for example if the only return is in an if-block and thus can't be accessed in all cases.
- Warning, Using a non-qualified name (would have) found: object package.group.group.name
- Warning, friendly operator name_TypeNameTypeName: Missing return value
- This is similar to function not having a return value but is the operator version, UScript supports operator overloading so the 'friendly operator name will be a reference to a table within the engine $ being Concat as an example.
- Warning, Class ClassName can't bind to DLL DLLPath
- The DLL that should be bound to either doesn't exist in the Win32\UserCode directory or was compiled wrong, for example on another system with debug settings (they only work on the system they were compiled on).
- Warning, Variable declaration: 'VARIABLENAME' conflicts with previously defined field in 'CLASSNAME'
- You should not redefine existing variables in subclasses using the var or local declaration since the variable is already available from the parent class.
- Warning, 'identifier' obscures 'identifier' in base class 'OBJECTNAME'
- Warning, Variable is declared with 'SerializeText' but this keyword only has meaning for Native variables
Local Variables
- Warning, 'variable name' : unreferenced local variable
- A variable is declared within a function and never assigned a value.
- Warning, 'variable name': unused local variable
- A local variable was declared and maybe the function even assigns a value to it, but the value is never accessed elsewhere in the function. (Functions returning a value need not assign that value to a variable, in case you were wondering.)
- Warning, 'variable name' : local variable used before assigned a value
- A variable is referenced before it is assigned a value, which means it'll return the default value for that type, whether that is what you are looking for or not. This could be conditionally incorrect, the compiler doesn't check to see in which order things are carried out so it could in fact be wrong, hence only a warning.
Replication
- Warning, Reliabe/Unreliable keywords are no longer used in 'replication {}'
- Those keywords only apply to function replication and are function modifiers in Unreal Engine 3.
Default Properties
- Warning, Import failed for 'variable name': property is config (Check to see if the property is listed in the DefaultProperties. It should only be listed in the specific .ini/.int file)
- It was tried to assign a default value to a variable that was declared config. Such a variable is supposed to read it's value always from the associated INI file, so it doesn't make sense to assign it in code and not there.
- Warning, Unknown property in defaults: 'line from defaultproperties block'
- A property in the defaults is not a defined variable.
- Warning, Invalid property value in defaults: property=value
- A property in the defaults is not a defined variable.
- Warning, redundant data: 'line from defaultproperties block'
- There can only be one assignment for a property per class definition, so you probably have a duplicate in the DefaultProperties.
- Warning, ObjectProperty package.class.property: unresolved reference to object'package.group.object'
- The specified object could not be found in the package.
- Warning, Unable to parse parameter value in defaultproperties array operation: array<struct>.add((member1='value',member2='value'))
Failure
- Failed to load 'object package.group.name': Failed to find object 'object package.group.name'