- Package for deployment to NPM as
@lpc-lang/core
- Parse and return default expression in LPCDoc
@param
tags.
- Fix: Adjust handling of array of arrays #180
- Fix: Parser errors when last last is an include directive without a newline #184
- Fix: Macro parameter should not get substituted by other macros #186
- Fix: Class declarations should allow property declaration lists #188
- Fix: Import with null text can crash program file load
- Improved efun definitions:
- FluffOS
shutdown
- FluffOS
- Fix: Add $() support to type checker #167
- Fix: FluffOS error() efun does not mark unreachable code #175
- Resolve object names in
@typedef
tags. - FluffOS efun changes:
- Updated query_num
- Added notify_fail
- Fix: objectp should maintain typed object #168
- Fix: Incorrect return type for closure set to a function #170
- Fix: arrayp sefun is not changing the flow type to array #171
- Added support for LPCDoc intersection types
- Fix: Foreach over an array always results in a string type #161
- Fix: Variable in foreach losing type #163
- Fix: Flow type lost inside inline closure #164
- Improved efun typing:
- FluffOS
unique_array
- Added type guards to several LD efuns
- FluffOS
- Fix: FluffOS
ref
keyword not being parsed correctly. #155 - Fix: Object type not resolved when used in a union #156
null
keyword was incorrectly parsed as a reserved word in LPC code.- FluffOS efun improvements (thanks @michaelprograms)
- Fix: catch blocks should not be block scoped #91
- Fix: Foreach with two variables should not report 2405 #94
- Fix: Parser error on mapping access with multi args inside a prefix unary expr #150
- Fix: Flow node incorrect for variables initialized at the object level #152
- Fix: Node position incorrect when parsing a macro inside a nested include directive.
- Fix: Diagnostics are duplicated after running the build task #137
- Fix: LPCDoc comment should not be captured by #include #140
- Fix: Incorrect signature resolution when function decl does not have doc comment #139
- Fix: Editing an .h file should trigger a reparse of files that include it. #143
- Fix: Type predicates not working in inherited sefun files. #144
- Fix: Fix typings for filter efun and add unit test, closes #145
- Fix:
#include
directives with a rooted path using workspace root instead of project root. - Fix: this_object() property access not able to resolve protected functions.
- Added
.h
to the file extensions that will activate the language server. - Added support for
@lpc-nocheck
and@lpc-ignore
comment directives.
- Fix: LPCDoc
@var
tag types were incorrectly linked to the original symbol - Performance improvement: reduced memory consumption by 17%
- Code cleanup and v8-specific code optimizations
- Macro hover now shown for global and pre-defined macros
- New: VSCode build task - Run the
LPC: Build
task to validate all files in your project.
- Fix: Completion provider does not return defines #127
- Fix: Syntax highlighting should allow whitespace after property access tokens
- Fix: LPCDoc type predicates not working
- Fixed a bug that could cause @ string blocks to cause the parser to run out of memory.
- Performance improvements
- Various grammar improvements with indenting, highlighting, and bracketing
- Fenced code markdown blocks now highlight using LPC syntax.
- Cleaned up server logging (removed TS reference, removed version number)
- Add localization support #43 - Thanks to @serenez for contributing.
- Remove duplicate import nodes from dependency graph - speeds up recompilation when editing files.
- Fix: .h file incorrectly marks code as disabled #122
- Set default max heap size to 3072 and added the
LPC.languageServer.maxLpcServerMemory
configuration option to change. - Detect and report circular
#include
references.
- Fix: Project info incorrectly reported driver type as FluffOS (see FluffOS - Maybe classes aren't being parsed properly anymore #113)
- Fix: Unable to open when going to definition on windows #118
- Improve program file load order so that driver prefines are consistenly available to all files.
- Source files will now reparse when config options that impact compilation are changed.
- Fix: Driver predefined macros marked as undefined on initial startup
- Fix: Hover text garbled when type annotation uses a macro #110
- Fix: Function not recognized as callback #109
- Enhancement: Include file handler should read from ScriptSnapshot instead of disk #60
- Moved #include resolution error to checker instead of parser
- Added #include files to program dependency graph
- LPCDoc
@var
tags now provide additional validation (must have a name, must be an inherited var) - Improved AST structure for include directives
- Improved diagnostic reporting for errors inside include directive nodes
- Fix: Prefix unary expr is parsed incorrectly causing lpc2367 to be reported #104
- Fix: @var comment tag not working when placed before an inherit #105
- Fix some errors introduced by #102
- Fix: efun:: prefix reports 9023 and should not #99
- New: Feature request: Annotate the type of variables declared in an inherited object
- Fix: Symbol is resolving to efun instead of sefun #95
- Fix: Symbols with super prefix do not resolve #97
- Added ability to use
@callback
and@template
tags in function signatures. - Properly resolve call expression to a function symbol when a block scoped variable by the same name also exists.
- Enhance efun definitions
- Fix: v2 parse function ref in inline closure #72
- Fix: Function arguments inside catch() statement being flagged as unused #90
- Fix: Object resolution fails when file extension ends with .h #92
- FluffOS - function shortcuts now validated, e.g.
(: call_other, ob, fun :)
- FluffOS call_other with array target shortcuts now validated
- Array arithmetic ops no longer report an error
- Finished support for doc comment templates and type inference
- Completed type checking code for structured types (to check objects against each other)
- Added
strictObjectTypes
compiler option.
- Fix: Binary expression should allow bytes/buffer types
- Fix: Assignment with conditional expression reports type error #73
- Fix: String literals should allow newlines in FluffOS #85
- Fix: Mapping elements were not getting type checked
- Fix: Error when call expression had incorrect arity but signature has a rest parameter.
- Fix: Inline closure body was not being consistently checked
- Fix: Inline closure arguments were not resolved
- Various efun definition tweaks
- Add support for Fluff array property access shortcut (#70)
- Better detection of Inferred to Configured projects
- Correctly resolve protected inherited member visibility #67
- Hide variables from property access autocomplete
- inline closures used as default params now resolve their return type and correctly report type mismatches
- spread elements are properly checked
- type predicates no longer override a function's declared return type
- some efuns doc tweaks
- Initial prelease of v2
- Because 1.0.29 was incomplete
- Fix: Signature hint does not recognize function type #53
- Fix: Exception when typing foreach without variable name #54
- Fix: Strings with just an emoji character get garbled on semantic highlight
- Fix: #define statements are not syntax highlighted correctly #50
- Fix: Error requesting textdocument failed #47
- Fix: Find all references broken by a change in v26.
- Fix: The visible function reports an error. #46
- Fix: undefined token exception during diagnostics generation
- Fix: signature not being displayed when hovering over a function declaration (part 3 of #42)
- Fix: crash caused by flushing change timer after document has been disposed
- Fix: FluffOS global include file was not included in some instances.
- Removed "Process All Files" command (it is no longer needed)
- Fix: Performance Degradation and Diagnostic Errors in VSCode 1.0.23 #42
- Allow comments in init_file
- Fix: [FLUFFOS] keys() efun is missing #38
- Fix: Cannot destructure property 'fileHandler' exception reported in #37
- Fix: Function signature was incorrect in symbol hover.
- Fix: Find All References not detecting sefun->fn() calls #35
- Fix: sefun file not being loaded for code completion or symbol info.
- Fix: [FLUFFOS] Handle whitespace before text formatting shortcut end.
- Fix: Properly reset lexer state on error.
- [FLUFFOS] Added double bang
!!
operator to grammar (#31). lpc-config.json
now uses JSONC so comments can be added to the file (#32)- Find References no longer requires a user-initiated file scan and is much more memory efficient.
- Fix: [FLUFFOS] Parser does not like the ref keyword in function definitions #29
- Fix: [FLUFFOS] Allow underscores in float literals (e.g.
1_000_000.0
) - Fix: Precedence of unary operation parsing was incorrect
- Fix: Variables refs not correctly identified when declaration is a method parameter
- Fix: [FLUFFOS] Find All References quirks #18
- Major improvements to symbol lookup in Find References and Goto Definition
- Better handling of disposed contexts
- Memory cleanup
- Fix: [FLUFFOS] Parser error on catch blocks #25
- Fix: Parser error on variable declarations without types
- Fix: Preprocessor included two many tokens when end of define ended with a \
- Improvements to code evaluation (strings, operators, brackets, arrays)
- Executes FluffOS
get_include_path
apply when evaluating files. - Fix: Found reference range is too large #20
- Fix: [FLUFFOS] Class instantiation #19
- Fix: Reference incorrectly mapped to efun #23
- Added
unknown
type to FluffOS parser - Removed
new
andload_object
from parser. These are now handled as efuns. - Efuns are now read out of .h files packaged with the extension.
- Added FluffOS efuns
- Converted LD efuns to .h file format.
- Various parser tweaks for missing types (lwobject, unknown, etc)
- Fix: [FLUFFOS] Default parameters causing errors #9
- Fix: [FLUFFOS] #undef inside a function #13
- Fix: [FLUFFOS] Syntactic sugar for evaluate() reporting diagnostic that can't be configured #10
- Fix: [FLUFFOS] Case statements with no leading or trailing value #8
- Show macro expansion in hover
- Fix: Some Fluff-only keywords were being dropped from macro definitions
- Fix: Super accessor was not allowing all valid identifiers as a prefix
- Fix: Preprocessor did not recognize directives with a space after the
#
symbol. - Fix: Parser did not allow variable declarations inside an if statement's conditional expression
- Fix: Remove comma expression ambiguity in grammar that caused an infinite loop when parsing large array initializers.
- The
lpc-config.json
file is now used to determine the LPC root folder. If no config file is found, the VS Code workspace root is used. See: Workspace Root vs Lib Root - Added the ability to turn off all semantic diagnostics.
- Fix: Regression parsing struct initializers in LD.
- Started added unit tests for the parser, lexer, and pre-processor.
- Allow array type declaration without a primitive type
- Added more diagnostic codes to lpc-config.
- Allow variable declarations in switch body before first case.
- Display current driver type in VSCode status bar
- Fix: Parsing error when including a bracketed path with a forward slash
- Fix: Struct member declarations can have multiple variables separated by commas
- Fix: Multiline defines not tokenized correctly when lines end with
\r\n
- Fix: Global include filename resolves incorrectly in windows.
- Fix: Goto def (f12) not working for macros defined in included files.
- Fix: Multiline defines were not parsed correctly in windows.
- Fix: Diagnostics would sometimes disappear when file is inherited by another file.
- Allow spread operator in function forward declaration
- Add struct modifiers (
private
) - Add global visibility modifiers
- Allow whitespace between opening parent and square bracket of a mapping
- Make
status
a reserved word for LD only. - Added
global_include
option to the files section of lpc-config (mainly for FluffOS) - Refactor
clone_object
symbol creation so that it can be detected as a keyword in FluffOS.
- Added support for string formatting preprocessor shortcuts (
@
and@@
) - https://www.fluffos.info/concepts/general/preprocessor.html#text-formatting-shortcuts - Allow function forward defines without parameter variable names.
- Allow SEMI at the end of
#include
statements - Add function argument spread operator (
...
)
Started adding support for FluffOS-specific syntax.
Initial release