rokucommunity / rokucommunity/brighterscript
Null coalescing operator used with namespace constant results in warning
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 208
- Forks
- 68
- Avg merge
- 8h 39m
- Merged PRs (30d)
- 39
Description
A pattern we have been using is to retrieve a value from a remote configuration, but fallback to a local constant if the remote value isn't defined.
For example:
url = m.config?.serviceUrls?.imageService ?? CommonConfigConst.imageServiceUrl
where CommonConfigConst.imageServiceUrl is defined as
namespace CommonConfigConst
const imageServiceUrl = "https://<some server>/"
end namespace
The transpiler converts that to
url = (function(CommonConfigConst, m)
__bsConsequent = m.config?.serviceUrls?.imageService
if __bsConsequent <> invalid then
return __bsConsequent
else
return "https://i<some server>/"
end if
end function)(CommonConfigConst, m)
When the channel is side loaded, we see a warning in the console:
BRIGHTSCRIPT: WARNING: unused variable 'commonconfigconst' in anonymous function in /<path to code>/ImageService.bs:62
It seems that the transpiler is inlining the constant, but treating the namespace as a variable.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the shown null-coalescing expression with a namespace constant and inspect the transpiler path that generates the anonymous function. Confirm that the namespace is not treated as an unused variable while the constant fallback remains inlined, and verify that the warning no longer appears.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100