Aego Playground

Diagnostics

AES1001code

This character cannot appear here.

Fix: Use ASCII letters for names, put other text inside a string, and use && or || instead of & or |.

AES1002code

The string literal has no closing quote.

Fix: Add " at the end of the string.

AES1003code

The escape sequence after \ is not supported.

Fix: Use \n, \t, ", \ or \uXXXX.

AES1004code

The word is reserved for a future version of the language.

Fix: Rename the identifier.

AES1005code

The number literal is malformed.

Fix: Write digits after the point (1.0, not 1.) and separate digits with _ only between digits.

AES1006code

The block comment has no closing */.

Fix: Add */ where the comment should end.

AES1007code

The file contains bytes that are not valid UTF-8.

Fix: Save the file as UTF-8.

AES1008code

A string literal cannot span lines.

Fix: Close the string on the same line or use \n.

AES1101code

The parser expected something else at this point.

Fix: Check for a missing bracket, comma or operator just before this position.

AES1102code

Every script file starts with a package clause.

Fix: Add package <directory name> as the first line.

AES1103code

Attributes are allowed only on scripts and script fields.

Fix: Move the attribute above a script or a var inside a script, or remove it.

AES1104code

Imports must come before any declaration.

Fix: Move the import to the top of the file, after the package clause.

AES1105code

Packages cannot hold mutable state.

Fix: Use const for fixed values, or move the variable into a script as a field.

AES1106code

Types, functions and constants are declared at package level.

Fix: Move the declaration out of the function body.

AES1107code

The left side of := must be one new name.

Fix: Write name := value, or use = to assign to an existing field or element.

AES1108code

A composite literal key must be a field name.

Fix: Write Type{Field: value}.

AES1109code

The code is nested too deeply.

Fix: Split the expression or block into helper functions.

AES1110code

The single part of a for loop must be a condition.

Fix: Write for cond {} or for init; cond; post {}.

AES1111code

A slice type here must be followed by a literal.

Fix: Write []T{...}.

AES1112code

Only one value can be assigned per statement.

Fix: Split the assignment into several statements.

AES1113code

else must follow the closing brace on the same line.

Fix: Write } else {.

AES2001code

The name is not declared in this scope.

Fix: Check the spelling, declare it, or add the missing import.

AES2002code

The name refers to something that is not a type.

Fix: Use a type name such as int, Vec2 or a declared struct.

AES2003code

The value has a different type than the place it is used.

Fix: Convert explicitly, for example float(x) or int(f).

AES2004code

The operator is not defined for these operand types.

Fix: Convert the operands to a type the operator supports.

AES2005code

The call passes a different number of arguments than the function expects.

Fix: Match the function signature; hover the function to see it.

AES2006code

The expression is not a function.

Fix: Remove the parentheses or call a function instead.

AES2007code

The left side cannot be assigned to.

Fix: Assign to a variable, field, slice element or writable component field.

AES2008code

The type has no field or member with this name.

Fix: Check the spelling; press Ctrl+Space after . to see the members.

AES2009code

The name starts with a lowercase letter, so it is private to its package.

Fix: Rename it to start with an uppercase letter if other packages need it.

AES2010code

A constant needs a value known at compile time.

Fix: Use literals and other constants only.

AES2011code

Integer division by a constant zero.

Fix: Check the divisor.

AES2012code

The constant does not fit its type.

Fix: Use a smaller value or a wider type.

AES2013code

The function can reach its end without returning a value.

Fix: Add a return statement on every path.

AES2014code

break or continue is outside a loop or switch.

Fix: Move it inside a for loop, or use return.

AES2015code

A switch on an enum must handle every member.

Fix: Add the missing cases or a default.

AES2016code

The same case value appears twice.

Fix: Remove the duplicate case.

AES2017code

A struct cannot contain itself by value.

Fix: Store the relation in a slice or remove the field.

AES2018code

The name is already declared in this scope.

Fix: Rename one of the declarations or remove one of them.

AES2019code

The returned value does not match the function result.

Fix: Return a value of the declared type, or none in a function without a result.

AES2020code

nil has no type of its own here.

Fix: Give the variable an explicit reference type: var r NodeRef = nil.

AES2021code

The type argument is not valid here.

Fix: Use Get/Has with a component name, AssetRef<Texture|Scene|Prefab|Mesh>.

AES2022code

A lifecycle method has the wrong signature.

Fix: Use func Ready(), func Update(dt float), func FixedUpdate(dt float), func Reloaded().

AES2023code

These types cannot be converted into each other.

Fix: Convert through int, float or string as documented.

AES2024code

The expression does not produce a value.

Fix: Call the function, or use a value instead of a type or package.

AES2025code

The value is computed and then thrown away.

Fix: Assign the result or remove the expression.

AES2026code

Constants refer to each other in a cycle.

Fix: Break the cycle with a literal value.

AES2027code

Constants can only be bool, int, float, string or enum.

Fix: Use a script field for other types.

AES2028code

The composite literal does not fit its type.

Fix: Use all keyed or all positional values, with the right count.

AES2029code

The function is too large to compile.

Fix: Split it into smaller functions.

AES2030code

The package was not built because a dependency has errors.

Fix: Fix the errors in the named package.

AES2031code

The variable is declared but never read.

Fix: Use it or remove it.

AES2032code

Slice elements may occupy at most 32 value slots.

Fix: Make the element struct smaller or store several slices.

AES2050code

yield suspends a coroutine, so it is allowed only inside a function declared as coroutine.

Fix: Declare the method as func Name() coroutine and start it with start Name().

AES2051code

A coroutine cannot be called like a plain function.

Fix: Write start Name(args); keep the result in a Coroutine field to stop it later.

AES2052code

start runs a coroutine method of the current script.

Fix: Mark the method with coroutine after its signature, or call a plain method directly.

AES2053code

A coroutine is a script method and returns no value.

Fix: Move it into a script and remove the result type; pass results through fields or signals.

AES2054code

The handler parameters must match the signal parameters exactly.

Fix: Change the handler to take the same types in the same order as the signal.

AES2055code

Connect takes a plain method of this script or ref.Method; signals are emitted only by their own script.

Fix: Pass a method name like OnDied or other.OnDied; call Emit only on a signal of this script.

AES2056code

Ready, Update, FixedUpdate and Reloaded are called by the engine and cannot be coroutines.

Fix: Keep the lifecycle method plain and write start Name() inside it.

AES2057code

wait takes seconds as float, frames and fixed take a count as int, a bare yield value must be a Coroutine.

Fix: Convert the value, for example yield wait(float(n)) or yield frames(int(t)).

AES2058code

ScriptRef and GetScript need the name of a script type.

Fix: Use the script name, or pkg.Name when the short name is ambiguous.

AES2059code

Lifecycle methods and coroutines run only on their own instance.

Fix: Call a plain method of the target that does the work, or connect to a signal.

AES3001code

Only scalar, vector, enum and reference fields can be exported.

Fix: Remove @export or change the field type.

AES3002code

The attribute is not known.

Fix: Use @export, @former or @hide.

AES3003code

The attribute argument is not valid.

Fix: See the attribute in the Script Reference; hover it for the accepted arguments.

AES3004code

The attribute or argument is given twice.

Fix: Keep one.

AES3005code

The attribute does not apply to this declaration.

Fix: Move it to a script or field, or remove it.

AES3006code

A field default must be a constant.

Fix: Use a literal or constant, or set the value in Ready.

AES4001code

The package clause must match the directory name.

Fix: Rename the package clause or move the file.

AES4002code

No script package or engine module has this path.

Fix: Check the path; script packages are directories under scripts/.

AES4003code

The package is imported twice.

Fix: Remove one import.

AES4004code

A package cannot import itself.

Fix: Remove the import.

AES4005code

Packages import each other in a cycle.

Fix: Move the shared code into a third package.

AES4006code

The name is declared twice.

Fix: Rename or remove one declaration.

AES4007code

An import uses the same name as a declaration.

Fix: Rename the declaration.

AES4008code

The import is not used.

Fix: Remove it.

AES4009code

Package paths under aego/ belong to the engine.

Fix: Change the project module.

AES4010code

A script package and an engine module share the same path.

Fix: Rename the script directory.

AES5001code

The engine or native module has no such member.

Fix: Check the name; press Ctrl+Space after the module name to list members.

AES6001code

The callback ran more instructions than its budget, usually an endless loop.

Fix: Make sure every loop ends within one frame.

AES6002code

A native Go binding panicked.

Fix: Fix the Go function; the Console shows its stack.

AES6003code

Calls nested more than 256 levels, usually endless recursion or re-emitting a signal from its handler.

Fix: Add a stopping condition.

AES6004code

A reference is nil or its node, component or script instance no longer exists.

Fix: Check if ref != nil and IsAlive before use.

AES6005code

The slice index is outside the slice.

Fix: Check the index against len(slice).

AES6006code

Integer division by zero at runtime.

Fix: Check the divisor before dividing.

AES6007code

A string or slice handle is invalid.

Fix: Report this as an engine bug.

AES6008code

A function reached its end without returning.

Fix: Add the missing return.

AES6009code

A call or binding could not be linked.

Fix: Rebuild the scripts and native code.

AES6010code

An engine or native function reported an error.

Fix: Read the message; it names the cause.

AES6100code

A compiled artifact is corrupt.

Fix: Reimport the scripts (Assets → Reimport).