All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.68.2 - 2024-12-06
- Add more convenience exports from vscode-languageserver (#1359)
- upgrade to roku-deploy@3.12.3. Notable changes since 3.12.2:
- Fix issues with detecting "check for updates required" (roku-deploy#181)
- Identify when a 577 error is thrown, send a new developer friendly message (roku-deploy#180)
- Bump dependencies to remove audit issues (roku-deploy#178)
0.68.1 - 2024-11-26
- Fix bug with ternary transpile for indexed set (#1357)
- Enhance lexer to support long numeric literals with type designators (#1351)
0.68.0 - 2024-11-21
- Fix issues with the ast walkArray function (#1347)
- Optimize ternary transpilation for assignments (#1341)
0.67.8 - 2024-10-18
- upgrade to roku-deploy@3.12.2. Notable changes since 3.12.1:
- fixes #175 - updated regex to find a signed package on
/plugin_package
page (roku-deploy#176)
- fixes #175 - updated regex to find a signed package on
- namespace-relative transpile bug for standalone file (#1324)
- Prevent crash when
ProgramBuilder.run
called with no options (#1316)
0.67.7 - 2024-09-25
- Ast node clone (#1281)
0.67.6 - 2024-09-05
- support for
roIntrinsicDouble
(#1291) - support for resolving
sourceRoot
at time of config load (#1290)
- document plugin naming convention (#1284)
0.67.5 - 2024-07-31
- templatestring support for
annotation.getArguments()
(#1264)
0.67.4 - 2024-07-24
- upgrade to roku-deploy@3.12.1. Notable changes since 3.12.0:
- Fix bug with absolute paths and getDestPath (roku-deploy#171)
0.67.3 - 2024-06-14
- Flag using devDependency in production code (#1222)
0.67.2 - 2024-06-03
- Fix crash with optional chaining in signature help (#1207)
0.67.1 - 2024-05-16
- remove ascii color chars in language server logs (#1189)
- crash when diagnostic is missing range (#1174)
0.67.0 - 2024-05-10
- Fix formatting with logger output (#1171)
- Move function calls to separate diagnostic (#1169)
- resolve the stagingDir option relative to the bsconfig.json file (#1148)
- Upgrade to @rokucommunity/logger (#1137)
This release was skipped because we decided to change from the v0.66 alphas to move those breaking changes into v1.
0.65.27 - 2024-03-27
- Upgade LSP packages (#1117)
- Improve workspace/document symbol handling (#1120)
- Increase max param count diagnostic to 63 (#1112)
0.65.26 - 2024-03-13
- Prevent unused variable warnings on transpiled ternary and null coalescence expressions (#1101)
0.65.25 - 2024-03-07
- Allow negative patterns in diagnostic filters (#1078)
- Support when tokens have null ranges (#1072)
- Support whitespace in conditional compile keywords (#1090)
- Add
create-test-package
command for easier tgz testing (#1088) - Bump ip from 2.0.0 to 2.0.1 in /benchmarks (#1079)
- Reduce null safety issues in Statement and Expression subclasses (#1033)
0.65.24 - 2024-03-01
- upgrade to roku-deploy@3.12.0. Notable changes since 3.11.3:
- Support overriding various package upload form data (roku-deploy#136)
0.65.23 - 2024-02-29
- upgrade to roku-deploy@3.11.3. Notable changes since 3.11.2:
- Retry the convertToSquahsfs request given the HPE_INVALID_CONSTANT error (roku-deploy#145)
- empty interfaces break the parser (#1082)
0.65.22 - 2024-02-09
- support for
provideReferences
in plugins (#1066) - allow v1 syntax: built-in types for class member types and type declarations on lhs (#1059)
- fix sourcemap comment and add
file
prop to map (#1064) - move
coveralls-next
to a devDependency since it's not needed at runtime (#1051)
0.65.21 - 2024-01-31
- parsing issues with multi-index IndexedSet and IndexedGet (#1050)
0.65.20 - 2024-01-30
- plugin hooks for getDefinition (#1045)
0.65.19 - 2024-01-30
- Backport v1 syntax changes (#1034)
0.65.18 - 2024-01-25
- Refactor bsconfig documentation (#1024)
- Prevent overwriting
Program._manifest
if already set on startup (#1027) - Improving null safety: Add FinalizedBsConfig and tweak plugin events (#1000)
0.65.17 - 2024-01-16
- add documentation on pruneEmptyCodeFiles to the README (#1012)
- assign .program to the builder BEFORE calling afterProgram (#1011)
- properly handle
libpkg:/
prefix for script imports (#1017)
0.65.16 - 2024-01-08
- Add
pruneEmptyCodeFiles
option to prevent publishing of empty files and exclude unnecessary script imports (#997)
- chore: improve null safety (#996)
0.65.15 - 2023-12-26
- Prevent errors when using enums in a file that's not included in any scopes (#995)
0.65.14 - 2023-12-20
- multi-namespace class inheritance transpile bug (#990)
- flag missing function references for
onChange
function (#941) - upgrade to roku-deploy@3.11.2. Notable changes since 3.11.1:
- Update wrong host password error message (roku-deploy#134)
0.65.13 - 2023-12-08
- broken enum transpiling (#985)
0.65.12 - 2023-12-07
- Correct RANGE in template string when dealing with quotes in annotations (#975)
0.65.11 - 2023-11-30
- upgrade to roku-deploy@3.11.1. Notable changes since 3.10.5:
- Wait for file stream to close before resolving promise (roku-deploy#133)
- enums as class initial values (#950)
0.65.10 - 2023-11-14
- upgrade to roku-deploy@3.10.5. Notable changes since 3.10.4:
- Add better device-info docs (roku-deploy#128)
- Added some more message grabbing logic (roku-deploy#127)
0.65.9 - 2023-11-06
- upgrade to roku-deploy@3.10.4. Notable changes since 3.10.3:
- Enhance getDeviceInfo() method (roku-deploy#120)
- issue with unary expression parsing (#938)
0.65.8 - 2023-10-06
- interface parameter support (#924)
- Bump postcss from 8.2.15 to 8.4.31 (#928)
- chore: fix typescript typing for
Deferred
(#923)
0.65.7 - 2023-09-28
- fix bug in --noproject flag logic (#922)
0.65.6 - 2023-09-28
noProject
flag to bsc sobsconfig.json
loading can be skipped entirely even if present (#868)
- incorrect quasi location in template string (#921)
UnaryExpression
transpile for namespace and const (#914)
0.65.5 - 2023-09-06
- support overriding bs_const values in bsconfig (#887)
- allow optionally specifying bslib destination directory (#871)
- Print diagnostic related information (#867)
- ensure consistent insertion of bslib.brs (#870)
- Fix crashes in util for null ranges (#869)
- Fix tab issue when printing diagnostics (#865)
0.65.4 - 2023-07-24
- Install
v8-profiler-next
on demand instead of being a dependency (#854)
0.65.3 - 2023-07-22
- Show busy spinner for lsp builds. Remove
build-status
event in favor of newbusy-status
(#852) - upgrade to roku-deploy@3.10.3. Notable changes since 3.10.2:
- Bump word-wrap from 1.2.3 to 1.2.4 (roku-deploy#117)
- Bump word-wrap from 1.2.3 to 1.2.4 (#851)
0.65.2 - 2023-07-17
- beforeProgramDispose event (#844), (#845)
- profiling support to the cli via the
--profile
flag (#833)
- Make component ready on afterScopeCreate (#843)
- Add project index to language server log entries (#836)
- Prevent crashing when diagnostic is missing range. (#832)
- Prevent crash when diagnostic is missing range (#831)
- Add baseline interface docs (#829)
0.65.1 - 2023-06-09
- injection of duplicate super calls into classes (#823)
0.65.0 - 2023-05-17
- npm audit fixes. upgrade to coveralls-next (43756d8)
- Improve findChild and findAncestor AST methods (#807)
0.64.4 - 2023-05-10
- upgrade to roku-deploy@3.10.2. Notable changes since 3.10.1:
- Fix audit issues (roku-deploy#116)
- fix nodejs 19 bug (roku-deploy#115)
0.64.3 - 2023-04-28
- Improves performance in symbol table fetching (#797)
0.64.2 - 2023-04-18
- namespace-relative enum value false positive diagnostic (#793)
0.64.1 - 2023-04-14
- Bump xml2js from 0.4.23 to 0.5.0 (#790)
- upgrade to roku-deploy@3.10.1. Notable changes since 3.10.0:
- Bump xml2js from 0.4.23 to 0.5.0 (roku-deploy#112)
0.64.0 - 2023-04-04
- Fix namespace-relative items (#789)
0.63.0 - 2023-03-31
0.62.0 - 2023-03-16
- Fix transpile bug with optional chaning (#781)
- Fix crash when func has no block (#774)
- Move not-referenced check into ProgramValidator (#773)
- upgrade to roku-deploy@3.10.0. Notable changes since 3.9.3:
- Use micromatch instead of picomatch (roku-deploy#109)
0.61.3 - 2023-01-12
- Add diagnostic for passing more than 5 arguments to a callFunc (#765)
- upgrade to roku-deploy@3.9.3
0.61.2 - 2022-12-15
- Bump qs from 6.5.2 to 6.5.3 (#758)
0.61.1 - 2022-12-07
- Ensure enums and interfaces persist in typedefs (#757)
0.61.0 - 2022-12-05
- new
removeParameterTypes
option that removes type information from parameters when transpiling (#744)
- throttle transpiling to prevent crashes (#755)
- exception while validating continue statement (#752)
- add missing visitor params for DottedSetStatement (#748)
- flag incorrectly nested statements (#747)
0.60.6 - 2022-11-08
- double
super
call transpile in subclasses (#740) - issues with Roku doc scraper and adds missing components (#736)
0.60.5 - 2022-11-03
- Refactor SymbolTable and AST parent logic so that SymbolTables get their parent symbol table from its own (AstNode) (#732)
- Significant performance boost in
validate()
by cachinggetCallableByName
(#739) - Add diagnostic when using namespaces as variables (#738)
- Fix crash in
getDefinition
(#734)
0.60.4 - 2022-10-28
- Add
name
to symbol table (#728)
- Allow
continue
as local var (#730) - language server semanticToken request now waits until validate finishes (#727)
0.60.3 - 2022-10-20
- better parse recovery for unknown function parameter types (#722)
0.60.2 - 2022-10-18
- if statement block var bug (#698)
0.60.1 - 2022-10-18
- Beter location for bs1042 (#719)
0.60.0 - 2022-10-10
- upgrade to roku-deploy@3.9.2. Notable changes since 3.9.1:
- Replace minimatch with picomatch (roku-deploy#101)
- fixes signature help resolution for callexpressions (#707)
- Fix transpilation of simple else block with leading comment (#712)
0.59.0 - 2022-10-03
isThrowStatement
reflection function (#709)- Support
pkg:/
paths forsetFile
(#701) - Syntax and transpile support for continue statement (#697)
- Migrate to
stagingDir
away fromstagingFolder
(#706)
- Fix enum error for negative values (#703)
0.58.0 - 2022-09-23
- AST child searching functionality. (#695)
stagingFolderPath
option to the docs (f521066)- Create common ancestor for Expression and Statement (#693)
- Scope validation performance boost (#656)
- Finds and includes more deeply embedded expressions (#696)
- Rename refs to
isClassFieldStatement
andisClassMethodStatement
(#694) - Centralize file path normalization for Program (#692)
- use outputPath instead of object reference during transpiling to prevent duplicate file collisions (#691)
- Move file validation into BscPlugin (#688)
- upgrade to roku-deploy@3.9.1. Notable changes since 3.8.1:
- Sync retainStagingFolder, stagingFolderPath with options. (roku-deploy#100)
- Add stagingDir and retainStagingDir. (roku-deploy#99)
0.57.2 - 2022-09-08
- Fix
brightscript.configFile
workspace config bug (#686)
0.57.1 - 2022-09-07
- fix(parser): consider namespace function transpiled names (#685)
0.57.0 - 2022-09-02
- validation for files that are nested too deep (#680)
- upgrade to roku-deploy@3.8.1. Notable changes since 3.7.1:
- Allow
mod
as an aa prop(#684) - coerce AA member identifier kinds to
TokenKind.Identifier
(#684) - Doc Scraper issues (#585)
- Fix case sensitivity issue with
bs_const
values (#677)
0.56.0 - 2022-08-23
- compile crash for scope-less files (#674)
- parse error for malformed dim statement (#673)
- allow const as variable name (#670)
- crashes for language clients that don't support "workspace/configuration" requests (#667)
0.55.2 - 2022-08-15
- Dedupe code completions in components (#664)
0.55.1 - 2022-08-07
0.55.0 - 2022-08-03
- a
toJSON
function to SymbolTable (#655) - link all brs AST nodes to parent onFileValidate (#650)
- semantic token color for consts (#654)
- go-to-definition support for const statements (#653)
- bug that wasn't transpiling const expressions when used inside assignment expressions (#658)
- Performance boost: better function sorting during validation (#651)
- broken plugin imports with custom cwd (#652)
0.54.1 - 2022-07-22
- Fix bug in languageserver hover provider (#649)
0.54.0 - 2022-07-22
- hover for CONST references. (#648)
- plugins can contribute completions (#647)
- plugins can contribute hovers (#393)
0.53.1 - 2022-07-15
0.53.0 - 2022-07-14
- New Language Feature: Constants (#632)
- Flag top level statements (#638)
- Flag usage of undefined variables (#631)
- Use
util.createLocation
, notLocation.create()
(#637) - Better project detection by language server (#633)
0.52.3 - 2022-06-14
- fix bug with class transpile in watch mode (#630)
- Send program-triggered
validate()
diagnostics to language client (#629) - Emit before/after programTranspile during file transpile preview (#628)
0.52.2 - 2022-06-13
- transpile crash when file was changed by a plugin in beforeTranspile events (#627)
- bug in transpile preview custom command that wasn't returning the result (#626)
- add missing range on interface statement, causing transpile crashes (#623)
- transpile enum values in binary expressions (#622)
0.52.1 - 2022-06-10
- detect class circular extends (#619)
- improve namespace/enum/class semantic token detection (better syntax highlighting) (##621)
0.52.0 - 2022-06-08
- LanguageServer: Load projects based on bsconfig.json presence (#613)
- upgrade to roku-deploy@3.7.1
0.51.4 - 2022-05-31
- Add allowBrighterScriptInBrightScript to bsconfig.schema.json (#610)
0.51.3 - 2022-05-31
- hover for namespace functions (#606)
- add
owner
andkey
to the visitor callbacks (#600)
0.51.2 - 2022-05-26
- allow enums and interfaces as class field types (#602)
0.51.1 - 2022-05-26
- allow enums and interfaces as function return types (#601)
- support AstEditor in visitor editing pattern (#599)
0.51.0 - 2022-05-24
- Add function-based
AstEditor.edit
method (#598) - Allow multiple keys for
DependencyGraph.getAllDependencies()
(#596)
0.50.2 - 2022-05-23
allowBrighterScriptInBrightScript
config option to allow brighterscript features to be included in BrightScript files, and force those files to be transpiled (#573)
- upgrade to roku-deploy@3.7.0
0.50.1 - 2022-05-18
- Expose all the AstEditor methods to plugin events (#593)
- Fix language server cwd issue with multi-root workspaces (#592)
0.50.0 - 2022-05-17
srcPath
property onXmlFile
andBrsFile
to line up with the v1 branch (#581)- more
AstEditor
functions (#589)
- rename
ClassFieldStatement
andClassMethodStatement
toFieldStatement
andMethodStatement
respectively to allow their use in non-class-related things (#582)
- Fix semantic tokens for enums in if statements (#584)
- Don't push synthetic constructor into each class (#586)
- transpile bugs related to class
super
handling (#590)
0.49.0 - 2022-05-02
- allow interfaces and enums as function param types (#580)
- Transpile files added by plugins after start of transpile cycle (#578)
- add AstEditor to
beforeProgramTranspile
andafterProgramTranspile
plugin events (#576)
0.48.1 - 2022-04-14
- prevent duplicate
CreateObject
validations showing one for each affected scope (#568) - prevent
CreateObject
diagnostics for component library components (#568)
0.48.0 - 2022-04-13
- language support for native BrightScript optional chaining (#546)
- validation for all known
createObject
values and parameters. (#435)
- add missing statements and expressions to
createVisitor
(#567)
0.47.3 - 2022-04-08
- accuracy issues when parsing the manifest (#565)
0.47.2 - 2022-04-07
- enum transpile bug for binary expressions (#559)
- add missing
require
entry tobsconfig.schema.json
(#560)
0.47.1 - 2022-04-05
- disable strict cli args to empower plugins (#557)
- don't add trailing commas in transpiled output for array and aa literals (#556)
- retain quote char when transpiling xml attributes (#552)
0.47.0 - 2022-03-30
require
flag to allow loading external node modules as part of the build process (useful for things likets-node/register
). (#550, #551)
0.46.0 - 2022-03-24
- refactored try-catch statement to make the expressions and bodies easier to access via plugins. #514
0.45.6 - 2022-03-17
- upgrade to roku-deploy@3.5.4 which fixed significant performance issues during globbing. (roku-deploy#86)
- crash when checking for enums to transpile #539
- Transpile if statements as written #537
- Keep the original type case when transpiling. #536
- Show cli usage in plugins documentation
0.45.5 - 2022-03-10
- bug with typedefs and auto-generated class constructor functions #535
0.45.4 - 2022-03-08
- bug that wasn't computing ownScriptImports after calling
invalidateReferences()
#529 - bug with logger.time() not having accurate timings when run asynchronously #532
0.45.3 - 2022-02-25
- source map bug with plugins that used the AST node creation functions depending on
interpolatedRange
. #528
0.45.2 - 2022-02-24
- add default token values in creators. #520
0.45.1 - 2022-02-16
- upgrade to roku-deploy@3.5.3 which fixed a missing typescript definition issue.
0.45.0 - 2022-02-11
enum
language feature (#484)- transpile override for plugins when providing AST edits. (#511)
setFile
method to align with v1. (#510)
- deprecated
addOrReplaceFile
method to align with v1. (#510) - internal
Cache
method now extendsMap
instead of keeping an internal map. (#509)
0.44.0 - 2022-02-08
onScopeValidate
plugin event useful when plugins want to contribute scope validations (#505)
- show plugin transpile modifications in the
getTranspiledFile
callback (used for "show preview" functionality in vscode) (#502) - make
Program.getFile
more flexible, and deprecateProgram.getFileByPkgPath
,Program.getFileByPathAbsolute
(#506) - add
Program.getFiles
and deprecateProgram.getFilesByPkgPath
(#506) - move file validation plugin event emitting into
Program.validate()
which means you can't trigger those events by callingFile.validate()
anymore. (#504) - support generics for
Cache
class (#503)
- bug in hover showing required params as optional and optional params as required (#501)
0.43.1 - 2022-01-28
- crash when hovering over global functions (#497)
0.43.0 - 2022-01-28
- show function documentation when hovering over functions. (#495)
- for plugin authors:
- added
beforeFileValidate
andonFileValidate
plugin hooks (#490) - added
expressions
collection toBrsFile.parser.references
which includes all the full expressions, which can be used instead of AST walking in many cases. (#487)
- For plugin authors:
- move parse and validate events to
Program
class and out ofXmlFile
andBrsFile
. This only impacts plugins that depend on theafterFileParse
,onFileValidate
andafterFileValidate
events while also constructing those files with their constructors directly. (#494) - removed internal barrels. This means plugins can no longer do things like:
import { something} from 'brighterscript/some-path'
. All necessary exports can be done from the top-level brighterscript package directly. (#492)
- move parse and validate events to
- use
Map
forClassValidator
class lookup instead of an object. (#481)
- bug preventing code to come after an interface statement. (#493)
- don't crash on null options in
printDiagnostics
. (3147202)
0.42.0 - 2022-01-10
- AST editing utility for transformations during between the begin and end transpile lifecycle events. See the documentation for more info. (#478)
- bug in global function parameter checking that was not properly enforcing optional/required status for parameters. (#479)
0.41.6 - 2022-01-05
- issue in the transpiled output of the null coalescing operator where plain variable references are not properly passed into the function. (#474)
0.41.5 - 2021-11-23
- critical crash whenever a local variable had the same name as a javascript object function on the prototype (stuch as
constructor
). (#469)
0.41.4 - 2021-10-28
- bug transpiling instant resume xml elements (#465)
0.41.3 - 2021-10-27
- upgrade to roku-deploy@3.5.0 which adds the ability to use negated non-rootDir top-level patterns in the files array (#78)
- Allow diagnostic non-numeric disable code comments (#463).
0.41.2 - 2021-10-17
- crash when subclass field has same name as ancestor method (#460).
0.41.1 - 2021-10-07
- parse issue with regex literals (#458).
0.41.0 - 2021-09-27
- Regex literal support in brighterscript (#452).
0.40.1 - 2021-09-17
- install roku-deploy@3.4.2 which prevents deploy crashes when target Roku doesn't have an installed channel (roku-deploy#65)
0.40.0 - 2021-08-02
- language support for Interface statements (#426)
- cli prints the path of any loaded bsconfig.json on startup (#434)
0.39.4 - 2021-06-27
- incorrect block range for inline if/then branch (#424)
- extract associative array comma when parsing (#427)
- allow up to 6 arguments in
CreateObject
function signature (#430) - add v30/bslCore library functions to global callables (#433)
0.39.3 - 2021-06-01
- upgraded to roku-deploy@3.4.1 which fixes bugs introduced in roku-deploy@3.4.0
0.39.2 - 2021-05-28
- upgraded to roku-deploy@3.4.0 which brings significant zip speed improvements
0.39.1 - 2021-05-24
- re-export
CodeActionKind
so plugins don't need to import from vscode-brightscript-language directly.
- code action for "replace" tasks bug
- include missing information in the CodeAction construction
0.39.0 - 2021-05-18
- semantic token support for plugins
- basic semantic tokens for
new
statements and namespace usage
0.38.2 - 2021-05-17
- language server crash when namespaced function or class didn't have a name (#419)
0.38.1 - 2021-05-14
- SOURCE_FILE_PATH and SOURCE_LOCATION source literals are now string concatenations in order to avoid triggering Roku's static analysis rule against
file:/
protocol strings (#415)
- ParseJson function signature to include second parameter (#418)
- bsconfig.schema.json support for string diagnostic codes (#416)
- upgrade chokidar to add
--watch
cli support for M1 mac computers (#386) - several dependency vulnerability fixes (#413, #410, #411)
0.38.0 - 2021-05-04
- warning for mismatched class method accessibility (#402)
- allow class field overrides in child classes as long as they are the same type (#394)
0.37.4 - 2021-04-20
- bug validating namespace function calls (#390)
0.37.3 - 2021-04-12
- bug where having multiple components with the same name would cause issues in the program, normally requiring a language server or watcher restart. (#353)
- bug in xml file ignoring
needsTranspiled
flag when set by plugins (#384)
0.37.2 - 2021-04-08
- erraneous syntax issue when concatenating a template string and a regular string. (#383)
- prevent circular import causing stack overflow crash. (#381)
0.37.1 - 2021-03-30
- bug when transpiling print statements that wouldn't retain the existing separators (semicolon, comma, no separator) which all have unique uses (#373)
0.37.0 - 2021-03-18
- support for
bs:disable
comments in xml files (#363)
0.36.0 - 2021-03-15
- class import code actions (#365)
- append stack trace to every language server error (#354))
- restrict function and class imports to .bs files only (#365))
- language server crashes due to unsafe property access in callfunc expressions (#360))
- crashes in signature help (#358))
- template string transpile bug when two expressions were next to each other (#361))
0.35.0 - 2021-03-09
- code actions for suggesting import statements in brighterscript files (#347)
- safer access to nullable callables and values during certain language server operations (#328)
0.34.3 -2021-03-05
- bug when transpiling bsc with custom function and parameter return types
0.34.2 - 2021-03-04
- support for loading bslib without alias (i.e.
@rokucommunity/bslib
).
- bslib npm alias bug crashing npm install on nodeJS < 12
- infinite loop during transpile when copying bslib
- bug where bslib.brs functions were not properly prefixed during transpile
0.34.1 - 2021-03-02
- syntax parsing bugs within single-line if statements
0.34.0 - 2021-02-28
- language server file path completions inside strings that start with
pkg:
orlibpkg:
0.33.0 - 2021-02-27
- support for ropm version of bslib.(#334)
- parse crash when encountering immediately-invoked function expressions (IIFEs) (#343)
- error during language server completions when activated on the first token in the file (#342)
- refactored BrsFile.parseMode to be a property instead of a getter since there was no reason it needed to be a getter (#341)
0.32.3 - 2021-02-25
- fix significant performance bug in diagnostic filtering
- tweaks to the logging system to make
logLevel=verbose
less chatty - null reference error in
Scope.getFileByRelativePath()
- fix class fields that were missing in getSymbol requests
0.31.2 - 2021-02-20
- transpile bug when a template string starts with an expression (#327)
- when generating type definition files, include the namespace for every extends statement (#324)
0.31.1 - 2021-02-18
- prevent exception in codeAction functionality when file cannot be found in a
Program
0.31.0 - 2021-02-17
- plugin and language server support for codeActions
- codeAction to add missing
extends
attribute in components
- wrong line numbers in certain sourcemaps generated during transpile
- include annotations in emitted type definitions
0.30.9 - 2021-02-15
- prevent excess validations when non-workspace files are changed (#315)
- catch errors when getting signatures (#285)
- missing
Roku_Ads
function in global functions list. (#312)
0.30.8 - 2021-02-12
- add additional logging in
Program.removeFile
- Fix watcher bug on windows devices
- Don't mangle xml scripts during transpile
0.30.7 - 2021-02-11
- bug in
getSignatureHelp
that wouldn't work for function calls with no leading whitespace. (#307)
0.30.6 - 2021-02-07
- bad transpile for nested class method super calls
- SceneGraph node attributes being wrongly removed when modifying attributes
0.30.5 - 2021-02-03
- syntax support for dim statements
- completion and code navigation for labels
- exception related to signature help when writing comments
0.30.4 - 2021-02-02
- fixed crash during validation caused by a missing function body when parsing malformed code
0.30.3 - 2021-02-01
- performance issue when transpiling larger projects, even when no brighterscript code was used
0.30.2 - 2021-01-31
- xml parse error crashing validation ((#294)[#294])
- better handling for
createStringLiteral
((#292)[#292])
0.30.1 - 2021-01-29
- bug that would crash while transpiling if a script tag didn't have a
type
attribute - XML transpile now honors the
sourceMap
option
0.30.0 - 2021-01-26
- null coalescing operator (see the docs for more information)
- infinite loop when encountering annotations without an identifier above a class method (#291)
0.29.0 - 2021-01-25
- ternary operator (see the docs for more information)
0.28.2 - 2021-01-22
- config loading functions from
util.ts
are now run synchronously
- missing variable from
for each
statement in completions for language server - bug when running the CLI that wouldn't properly read the
sourceMap
property from bsconfig.json
0.28.1 - 2021-01-19
- (For plugin authors) refactored many async methods into sync methods to simplify file creation/management. (#278)
- bug with transpiling classes that would not always get the correct superclass index. (#279)
- annotations are now block-restricted (#274)
0.28.0 - 2021-01-16
- annotation support for classes and class methods (#270)
- bugs with go-to-definition and signature help for namespace functions, classes, and callfunc calls
0.27.0 - 2021-01-15
- plugin system changed to require a factory function instead of a singleton object (#272)
0.26.0 - 2021-01-14
- proper XML AST support
- component interface validation
- basic support for string-based diagnostic codes (from plugins)
0.25.0 - 2021-01-12
- support for passing custom types as function parameters and return types (#262)
0.24.2 - 2021-01-11
- bug with transpiled child classes causing on-device stack overflows (#267)
0.24.1 - 2021-01-09
- upgraded to roku-deploy@3.2.4
0.24.0 - 2021-01-08
sourceMap
option to enable/disable generating sourcemaps
- sourcemaps are disabled by default (previously they were enabled by default)
0.23.2 - 2020-01-06
isLiteralInvalid
was causing infinite recursion.- lock
vscode-languageserver-protocol
package version to prevent issues with vscode not following semantic versioning.
0.23.1 - 2020-12-22
- renamed
Scope.getFiles()
toScope.getAllFiles()
and added a new function calledScope.getOwnFiles()
- bug preventing
d.bs
loaded in parent files from showing up in child files. (#252)
0.23.0 - 2020-12-18
- AST parser refactoring (#244)
- Make
ElseIf
into anElseIfStatement
- Removed
ElseIf
token in favor of separateelse
andif
tokens - Refactored statement separators processing and cleaned error messages
- Improved try-catch parsing
- Improved label error handling
- Make
- bug causing invalid diagnostics to be thrown on files with multiple dots in their names (#257)
- syntax error for integer type declaration character (#254)
- syntax error for floats with more than 5 decimal places that also have a trailing exponent (#255)
0.22.1 - 2020-12-14
- small bug introduced by vscode-languageserver causing crashes anytime negative range values are provided.
0.22.0 - 2020-11-23
try/catch
andthrow
syntax support #218
0.21.0 - 2020-11-19
- Catch when local variables and scope functions have the same name as a class. (#246)
- Catch when functions use keyword names (#247)
- many internal changes:
- remove all the
BrsType
objects leftover from the upstreambrs
project. Things likeValueKind
,BrsType
, theToken.literal
property. - rename the brighterscript
BrsType
class toBscType
for more distinction from the now deleted from-upstreamBrsType
. - Modify the
createToken
function inastUtils/creators.ts
to accept a range, or use a default negative range. - Use the
BscType
objects for basic parser type tracking (this replacesValueKind
andBrsType
from upstreambrs
project). - minor AST property changes for
ForStatement
andFunctionStatement
, - any
ValueKind
references in code have been replaced with an instance of aBscType
(which will be the backbone of future type tracking) - Updated
ForStatement
to no longer include syntheticstep 1
tokens when those were not included in the source file. - remove eliminated
BrsType
items fromreflection.ts
.
- remove all the
0.20.1 - 2020-11-16
- load plugins relatively to the project (#242)
- modified reflection utilities so they are compatible with TS strict null checks (#243)
0.20.0 - 2020-11-13
- more language server features: onWorkspaceSymbol, onSignatureHelp, onDocumentSymbol, onReferences, improve onDefinition (#191)
0.19.0 - 2020-11-04
emitDefinitions
now defaults tofalse
(it previously defaulted totrue
)
- don't transpile
d.bs
files (which would produced.brs
files with duplicate information in them)
0.18.2 - 2020-11-2
- support on-demand parse for typedef-shadowed files (#237)
0.18.1 - 2020-10-30
- exclude bs1100 for typedef files (
Missing "super()" call in class constructor method.
) - fix some invalid class field types in typedef files
- include
override
keyword in class methods in typedef files
0.18.0 - 2020-10-30
- support for consuming and producing type definitions. (188)
0.17.0 - 2020-10-27
- Annotation syntax and AST support (#234)
0.16.12 - 2020-10-21
- parser bug when there was a trailing colon after
for
orwhile
loop statements (#230)
[0.16.11](https://github.com/rokucommunity/brighterscript/compare/v0.16.10...v0.16.11 - 2020-10-20
- bug when using single quotes in an xml script tag
- removed bs1106 (.bs file script tags must use the
type="brighterscript"
) diagnostic because it's unnecessary.
0.16.10 - 2020-10-20
- prevent crash when a callable has the same name as a javascript reserved name (#226)
- prevent crash when
import
statement is malformed (#224)
0.16.9 - 2020-10-18
- reduce language server throttle for validation and parsing now that those have improved performance.
- massively improve validation performance by refactoring
getFileByPkgPath
- micro-optimization of hot parser functions
- change codebase to use
import type
many places, which reduces the number of files imported at runtime
0.16.8 - 2020-10-15
- bug when printing diagnostics that would crash if the contents were missing (like for in-memory-only files injected by plugins) (#217)
- Drop expensive AST walking for collecting property names and instead collect them as part of parsing
0.16.7 - 2020-10-13
- bug when finding
bsconfig.json
that would use the wrong cwd in multi-workspace language server situations. - bug when transpiling in-memory-only files. (#212)
0.16.6 - 2020-10-13
- quirk in the GitHub actions workflow that didn't publish the correct code.
0.16.5 - 2020-10-13
- performance issue during the parse phase. We now defer certain collections until needed. (#210)
0.16.4 - 2020-10-12
- LanguageServer now sends a diff of diagnostics for files, instead of the entire project's diagnostics every time. (#204)
- transpile bug for namespaced class constructors that wouldn't properly prepend the namespace in some situations. (#208)
- bug in class validation that was causing bogus diagnostics during class construction in namespaces.(#203)
0.16.3 - 2020-10-11
- Add generic type parameter for
Program
add functions. - Export
BscType
type to simplifyBrsFile | XmlFile
usage everywhere.
- Prevent bogus diagnostic on all callfunc operations (#205)
0.16.2 - 2020-10-09
- critical bug in diagnostic printing that would crash the program if a diagnostic was missing a valid range.
0.16.1 - 2020-10-03
- rename
isEscapedCharCodeLiteral
toisEscapedCharCodeLiteralExpression
to match other expression class names - rename
FunctionParameter
toFunctionParameterExpression
to match other expression class names - convert
AAMemberExpression
interface into an expression class. - convert
isBrsFile
andisXmlFile
to check for constructor file name rather than file extension.
- bugs with plugin interoperability with BrighterScript when using
instanceof
. All internal BrighterScript logic now uses theis
functions fromastutils/reflection
, and plugin authors should do the same.
0.16.0 - 2020-10-02
Expression.walk
andStatement.walk
functions which provide shallow or deep walking of the AST- Many
ast
reflection methods to be used instead ofinstanceof
. - plugin system (still in alpha) support for re-scanning the AST after modifing the AST by calling
invalidateReferences()
- every token has a
leadingWhitespace
property now that contains leading whitespace. Retrieving whitespace tokens from theLexer
will be removed in a future update in favor of this appraoch
- all AST nodes now extend either
Statement
orExpression
instead of simply implementing their interfaces.
- several AST walking functions from
astUtils/
in favor of direct node walking
0.15.2 - 2020-10-01
- Bug in component validation that would throw errors if component name was undefined (generally due to an XML parse error). (#194)
0.15.1 - 2020-09-30
- improved performance in the lexer and parser
- potential for accidentally changing
cwd
during bsconfig resolving
0.15.0 - 2020-09-18
- plugin API to allow visibility into the various compiler phases. This is currently in alpha. (#170)
0.14.0 - 2020-09-04
- Add error diagnostic BS1115 which flags duplicate component names #186
0.13.2 - 2020-08-31
- Upgraded BS1104 to error (previously a warning) and refined the messaging.
0.13.1 - 2020-08-14
- upgraded to roku-deploy@3.2.3
- throw exception when copying to staging folder and
rootDir
does not exist in the file system - throw exception when zipping package and
${stagingFolder}/manifest
does not exist in the file system
0.13.0 - 2020-08-10
- ability to mark the
extends
andproject
options inbsconfig.json
, API and CLI as optional.
0.12.4 - 2020-08-06
- bug in cli that wouldn't properly read bsconfig values. #167
- bug in cli that doesn't use
retain-staging-folder
argument properly. #168
0.12.3 - 2020-08-03
- bug in the language server that would provide stale completions due to the file throttling introduced in v0.11.2. Now the language server will wait for the throttled parsing to complete before serving completion results.
0.12.2 - 2020-07-16
- Expose
ProgramBuilder.transpile()
method to make it easier for tools to transpile programmatically. #154
- bug on Windows when transpiling BrighterScript import statements into xml script tags that would use the wrong path separator sometimes.
0.12.1 - 2020-07-15
- upgraded to roku-deploy@3.2.2
- bug in roku-deploy when when loading
stagingFolderPath
fromrokudeploy.json
orbsconfig.json
that would crash the language server
0.12.0 - 2020-07-09
diagnosticLevel
option to limit/control the noise in the console diagnostics
- Move away from
command-line-args
in favor ofyargs
for CLI support
- Throttle LanguageServer validation to prevent running too many validations in a row.
- Bug in CLI preventing ability to provide false values to certain flags
- Do not print
info
andhint
diagnostics from the CLI by default.
0.11.2 - 2020-07-09
- add 350ms debounce in LanguageServer
onDidChangeWatchedFiles
to increase performance by reducing the number of times a file is parsed and validated.
- bug in the log output that wasn't casting string log levels into their numeric enum versions, causing messages to be lost at certain log levels.
- load manifest file exactly one time per program rather than every time a file gets parsed.
- bug in
info
logging that wasn't showing the proper parse times for files on first run.
0.11.1 - 2020-07-07
- diagnostic for unknown file reference in import statements (#139)
- upgraded to roku-deploy@3.2.1
- upgraded to jsonc-parser@2.3.0
- add begin and end template string literal tokens so we can better format and understand the code downstream. (#138)
- roku-deploy bug that would fail to load
bsconfig.json
files with comments in them. - bug in parser that would fail to find function calls in certain situations, killing the rest of the parse.
0.11.0 - 2020-07-06
- Source literals feature which adds new literals such as
SOURCE_FILE_PATH
,SOURCE_LINE_NUM
,FUNCTION_NAME
, and more. (#13) sourceRoot
config option to fix sourcemap paths for projects that use a temporary staging folder before calling the BrighterScript compiler. (#134)- Template string feature which brings template string support to BrighterScript. (#98)
- Do not show BS1010 diagnostic
hint
s for the same script imported for parent and child. (#113)
0.10.11 - 2020-07-05
- Fix bug that would fail to copy files to staging without explicitly specifying
stagingFolderpath
. #129
0.10.10 - 2020-06-12
- include the missing
bslib.brs
file in the npm package which was causing errors during transpile.
0.10.9 2020-06-12
- bslib.brs gets copied to
pkg:/source
and added as an import to every component on transpile. - several timing logs under the
"info"
log level.
- pipe the language server output to the extension's log window
- bug with global
val
function signature that did not support the second parameter (#110) - bug with global 'StrI' function signature that did not support the second parameter.
0.10.8 - 2020-06-09
- Allow leading spcaes for
bs:disable-line
andbs:disable-next-line
comments (#108)
0.10.7 - 2020-06-08
- bug in cli that was always returning a nonzero error code
0.10.6 - 2020-06-05
- incorrect definition for global
Left()
function. (#100) - missing definition for global
Tab()
andPos()
functions (#101)
0.10.5 - 2020-06-04
- added better logging for certain critical language server crashes
0.10.4 - 2020-05-28
- bug where assigning a namespaced function to a variable wasn't properly transpiling the dots to underscores (fixes #91)
- flag parameter with same name as namespace
- flag variable with same name as namespace
CreateObject("roRegex")
with third parameter caused compile error (#95)
0.10.3 - 2020-05-27
- tokenizing a string with no closing quote will now include all of the text until the end of the line.
- language server
TranspileFile
command now waits until the program is finished building before trying to transpile.
0.10.2 - 2020-05-23
- language server command
TranspileFile
which will return the transpiled contents of the requested file.
- quotemarks in string literals were not being properly escaped during transpile (#89)
- Bug that was only validating calls at top level. Now calls found anywhere in a function are validated
0.10.1 - 2020-05-22
- transpile bug for compound assignment statements (such as
+=
,-=
) (#87) - transpile bug that was inserting function parameter types before default values (#88)
- export BsConfig interface from index.ts to make it easier for NodeJS importing.
0.10.0 - 2020-05-19
- new callfunc operator.
0.9.8 - 2020-05-16
- the inner event system handling file changes. This should fix several race conditions causing false negatives during CLI runs.
- some bugs related to import statements not being properly traced.
0.9.7 - 2020-05-14
- TypeScript target to "ES2017" which provides a significant performance boost in lexer (~30%) and parser (~175%)
- the binary name got accidentally renamed to
bsc2
in release 0.9.6. This release fixes that issue. - removed some debug logs that were showing up when not using logLevel=debug
- false negative diagnostic when using the
new
keyword as a local variable #79
0.9.6 - 2020-05-11
logLevel
option from the bsconfig.json and command prompt that allows specifying how much detain the logging should contain.- additional messages during cli run
- don't terminate bsc on warning diagnostics
- removed extraneous log statements from the util module
- fixed bugs when printing diagnostics to the console that wouldn't show the proper squiggly line location.
0.9.5 - 2020-05-06
- new config option called
showDiagnosticsInConsole
which disables printing diagnostics to the console
- bug in lexer that was capturing the carriage return character (
\n
) at the end of comment statements - bug in transpiler that wouldn't include a newline after the final comment statement
- bug in LanguageServer that was printing diagnostics to the console when it shouldn't be.
0.9.4 - 2020-05-05
- diagnostic for detecting unnecessary script imports when
autoImportComponentScript
is enabled
- filter duplicate dignostics from multiple projects. (#75)
- bug that was flagging namespaced functions with the same name as a stdlib function.
- bug that was not properly transpiling brighterscript script tags in xml components.
- several performance issues introduced in v0.8.2.
- Replace
type="text/brighterscript"
withtype="text/brightscript"
in xml script imports during transpile. (#73)
0.9.3 - 2020-05-04
- do not show BRS1013 for standalone files (#72)
- BS1011 (same name as global function) is no longer shown for local variables that are not of type
function
(#70)
- issue that prevented certain keywords from being used as function parameter names (#69)
0.9.2 - 2020-05-02
- intellisense anywhere other than next to a dot now includes keywords (#67)
- bug in the lexer that was not treating
constructor
as an identifier (#66) - bug when printing diagnostics that would sometimes fail to find the line in question (#68)
- bug in scopes that were setting isValidated=false at the end of the
validate()
call instead of true
0.9.1 - 2020-05-01
- bug with upper-case two-word conditional compile tokens (
#ELSE IF
and#END IF
) (#63)
0.9.0 - 2020-05-01
- new compile flag
autoImportComponentScript
which will automatically import a script for a component with the same name if it exists.
0.8.2 - 2020-04-29
- bugs in namespace transpilation
- bugs in class transpilation
- transpiled examples for namespace and class docs
- bugs in class property initialization
0.8.1 - 2020-04-27
- Bug where class property initializers would cause parse error
- better parse recovery for incomplete class members
0.8.0 - 2020-04-26
- new
import
syntax for BrighterScript projects. - experimental transpile support for xml files (converts
.bs
extensions to.brs
, auto-appends theimport
statments to each xml component)
- upgraded to vscode-languageserver@6.1.1
0.7.2 - 2020-04-24
- runtime bug in the language server when validating incomplete class statements
0.7.1 - 2020-04-23
- dependency issue:
glob
is required but was not listed as a dependency
0.7.0 - 2020-04-23
- basic support for namespaces
- experimental parser support for import statements (no transpile yet)
- parser produces TokenKind.Library now instead of an identifier token for library.
0.6.0 2020-04-15
- ability to filter out diagnostics by using the
diagnosticFilters
option in bsconfig
- deprecated the
ignoreErrorCodes
in favor ofdiagnosticFilters
- Bug in the language server that wasn't reloading the project when changing the
bsconfig.json
0.5.4 2020-04-13
- Syntax bug that wasn't allowing period before indexed get expression (example:
prop.["key"]
) (#58) - Syntax bug preventing comments from being used in various locations within a class
0.5.3 - 2020-04-12
- syntax support for the xml attribute operator (
node@someAttr
) (#34) - syntax support for bitshift operators (
<<
and>>
) (#50) - several extra validation checks for class statements
- syntax bug that was showing parse errors for known global method names (such as
string()
) (#49)
0.5.2 - 2020-04-11
- downgrade diagnostic issue 1007 from an error to a warning, and updated the message to "Component is mising "extends" attribute and will automatically extend "Group" by default" (#53)
- Prevent xml files found outside of the
pkg:/components
folder from being parsed and validated. (#51) - allow empty
elseif
andelse
blocks. (#48)
0.5.1 - 2020-04-10
- upgraded to roku-deploy@3.0.2 which fixed a file copy bug in subdirectories of symlinked folders (fixes #41)
0.5.0 - 2020-04-10
- several new diagnostics for conditional compiles. Some of them allow the parser to recover and continue.
- experimental class transpile support. There is still no intellisense for classes yet though.
- All errors are now stored as vscode-languageserver
Diagnostic
objects instead of a custom error structure. - Token, AST node, and diagnostic locations are now stored as
Range
objects, which use zero-based lines instead of the previous one-based line numbers. - All parser diagnostics have been broken out into their own error codes, removing the use of error code 1000 for a generic catch-all. That code still exists and will hold runtime errors from the parser.
- bug in parser that was flagging the new class keywords (
new
,class
,public
,protected
,private
,override
) as parse errors. These are now allowed as both local variables and property names.
0.4.4 - 2020-04-04
- bug in the ProgramBuilder that would terminate the program on first run if an error diagnostic was found, even when in watch mode.
0.4.3 - 2020-04-03
- the
bsc
cli now emits a nonzero return code whenever parse errors are encountered, which allows tools to detect compile-time errors. (#43)
0.4.2 - 2020-04-01
- upgraded to roku-deploy@3.0.0
0.4.1 - 2020-01-11
- upgraded to roku-deploy@3.0.0-beta.7 which fixed a critical bug during pkg creation.
0.4.0 - 2020-01-07
- ability to specify the pkgPath of a file when adding to the project.
- upgraded to roku-deploy@3.0.0-beta.6
- bug that was showing duplicate function warnings when multiple files target the same
pkgPath
. Now roku-deploy will only keep the last referenced file for eachpkgPath
- reduced memory consumtion and FS calls during file watcher events
- issue in getFileByPkgPath related to path separator mismatches
- bugs related to standalone workspaces causing issues for other workspaces.
0.3.1 - 2019-11-08
- language server bug that was showing error messages in certain startup race conditions.
- error during hover caused by race condition during file re-parse.
0.3.0 - 2019-10-03
- support for parsing opened files not included in any project.
- parser bug that was preventing comments as their own lines inside associative array literals. (#29)
0.2.2 - 2019-09-27
- bug in language server where the server would crash when sending a diagnostic too early. Now the server waits for the program to load before sending diagnostics.
0.2.1 - 2019-09-24
- the text for diagnostic 1010 to say "override" instead of "shadows"
- crash when parsing the workspace path to read the config on startup.
- auto complete options not always returning results when it should.
- windows bug relating to the drive letter being different, and so then not matching the file list.
- many bugs related to mismatched file path comparisons.
0.2.0 - 2019-09-20
- bsconfig.json validation
- slightly smarter intellisense that knows when you're trying to complete an object property.
- diagnostic for deprecated brsconfig.json
- basic transpile support including sourcemaps. Most lines also support transpiling including comments, but there may still be bugs
- parser now includes all comments as tokens in the AST.
- bugs in the languageserver intellisense
- parser bug that would fail when a line ended with a period
- prevent intellisense when typing inside a comment
- Bug during file creation that wouldn't recognize the file
0.1.0 - 2019-08-10
- Cloned from brightscript-language