Skip to content

Latest commit

 

History

History
171 lines (132 loc) · 11.5 KB

CHANGELOG.md

File metadata and controls

171 lines (132 loc) · 11.5 KB

UnrealScript Language Service

0.8.1 (Juni 16, 2024)

  • (check types) Fixed false-positive Type 'Object' and 'None' are incompatible with operator '!=' this occurred due a false 'same-cost' operator match for Interface types; furthermore supported type checking for Interface types.
  • (check types) Fixed false-positive Type 'Struct' and 'Struct' are incompatible with operator '==' this occurred when comparing structs that have no overloaded '=='
  • Fixed minor issues with completion suggestions, e.g. when writing begin object name=<carret> etc.
  • Fixed minor syntax highlighting issues, and added unit tests.
  • Fixed error popup 'names cannot be falsy' when writing multiple variables.
  • Fixed parenthesis () are no longer required for an assert statement.
  • Restricted grammar parsing of multiline assignments and parameter assignments to UE3 (set generation to 3 to enable)

0.8.0 (Juni 7, 2024)

  • Improvements made to type checking
    • The type checker will now calculate the lowest cost for each operator given the type of its operands, meaning the correct overloaded operator will be selected, if any. If multiple operators have an identical cost, then the types are reported as 'incompatible' just like the compiler. This however still needs further polishments in regards to 'Interface' types.
  • Improvements made to completion suggestions
    • Suggest class, struct, or state name when writing extends <qualified.identifier>
    • Suggest overridable state names when writing state <identifier>
    • Suggest all known class modifiers when writing a class declaration.
    • Suggest all ignorable functions when writing ignores <identifier, identifier>
    • General improvements to context filtering.
  • Improvements made to syntax highlighting
    • Added highlighting for missing UE1 keywords (localized, expand (in struct and state), always (replication if)).
  • Improvements made to parsing
    • Parsing now respects the configured generation setting, meaning it won't parse keywords or grammar rules if the set generation does not have that keyword or grammar rule.
  • Improvements made to semantic syntax highlighting.
  • Improvements made to diagnostics, including new diagnostics:
    • Report if a deprecated field is referenced.
    • Report if an operator cannot be found.
    • (check types) Report if the operator is found, but no overload can be matched.
    • (check types) Report if a class type cannot be cast or assigned to an unrelated class type, also report if the cast is redundant.
  • Quality of Life

0.7.1 (Juni 29, 2023)

  • Removed configuration of "filenamePatterns"

0.7.0 (Juni 29, 2023)

  • Implemented signature help, providing assistance with function call arguments.
  • Added two new customizable options to control the debounce period time, allowing users to specify the delay until analysis and/or indexing initiates after a document edit.
  • Added underlining to comments in tooltips.
  • Added an icon for .uc files.
  • Expanded semantic highlighting to encompass additional symbol kinds.
  • Improved symbol lookup functionality for default value assignments.
  • Fixed an issue that prevented renaming of a symbol if it was a reference.
  • Fixed a minor completion keyword-suggestion issue when assigning a default value to a property.
  • Fixed a bug where analysis wouldn't detect invalid arguments in function calls if the function hadn't been analyzed yet.

TypeChecking (see option "unrealscript.checkTypes")

  • Added diagnostics for self-casting or casting to invalid types, as well as validation of dynamic casting in switch expressions.
    • Bug: May produce false positives when an overloaded operator is mismatched.

0.6.4 (Feb 16, 2023)

0.6.3 (Feb 10, 2023)

  • Fixed an issue with skipLine() failing on UnrealScript directives i.e. "#exec obj load ..."

0.6.2 (Feb 9, 2023)

  • Implemented an option to enable auto-detection of the UnrealScript language generation that's being used by the workspace.

  • Implemented a new code-action to inline a constant's evaluated value.

  • Quality of Life

    • General improvements to how indexing of documents is handled.
    • Fixed parser support for string types that have a fixed size e.g. String[255] (UE1).
    • Fixed type Pointer will be no longer recognized if the language is set to generation 3 (this has been displaced by the Core.Object.Pointer struct).
    • Fixed No symbols found

0.6.1 (Jan 29, 2023)

  • The service will now register .u/.upk (the extensions are configurable) files as known package symbols, this means such packages will be included in the auto-completion and indexing of references.

    • Note: The contents of the packages are not yet indexed.
  • Implemented Auto-insert when overriding a function.

  • Further improvements have been made to the auto-completion suggestions.

0.6.0 (Jan 26, 2023)

  • Implemented LSP Semantic-Tokens #137 (References to a class will now be highlighted as such even where the tmLanguage cannot determine the identifier's type)

    • image
  • Implemented LSP Workspace Symbols #148

    • image
  • Added UnrealScript snippets #149.

  • Typing, major improvements have been made to the type-checking system, there are almost no false-positive errors anymore!

  • Archetypes, overall better support for "begin object" constructions.

  • Better and more responsive auto-completion suggestions.

  • Quality of Life

    • Overall improvements have been made to UnrealScript parsing.
    • Overall improvements to UnrealScript syntax highlighting.
    • Fixed (DefaultProperties) Issue with structs written on multiple lines.
    • Fixed an issue where a Function call in a member context Outer.SomeIdentifier(...) could mismatch a Class's name.
    • Partially fixed an issue (in some cases) where a Function/Class invocation could be mistaken for one another.
    • Fixed LSP/documentSymbol VSCode's Sticky scroll feature.
    • Fixed an issue that caused the document transformer to abort when trying to build a property with bad type-grammar (actually usually triggered by use of macros).

0.5.0 (Nov 8, 2021)