作者:淋殁 | 来源:互联网 | 2023-09-16 09:36
Describe the bug
I am trying to compile the following code:
1 2 3 4 5 6 7 8 9
| js
namespace NSMain;
identifier UserId = Int;
entrypoint function main(): UserId {
let id = UserId@{1};
return id;
} |
However, it fails with this error:
1 2 3 4 5 6
| shell
Error -- Error: Command failed: clang++ -g -DBDEBUG -std=c++17 -o ckey /Users/brakmic/projects/BosqueLanguage/impl/bin/scratch/cpp/*.cpp
/Users/brakmic/projects/BosqueLanguage/impl/bin/scratch/cpp/main.cpp:41:5: error: use of undeclared identifier 'RCReturnFunctor_BSQIdKeyCompound'
RCReturnFunctor_BSQIdKeyCompound{}($$return, $callerscope$);
^
1 error generated. |
I have then tried to fix this error by adding an implementation of RCReturnFunctor_BSQIdKeyCompound to bsqkeyvalues.h:
1 2 3 4 5 6 7 8 9 10 11
| cpp
struct RCReturnFunctor_BSQIdKeyCompound
{
inline void operator()(BSQIdKeyCompound* idk, BSQRefScope& scope) const
{
for(size_t i = 0; i keys.size(); ++i)
{
scope.processReturnChecked(idk->keys[i]);
}
}
}; |
However, the above program now crashes with Segfault 11 (missing some globals, I suppose).
1 2
| shell
'./ckey' terminated by signal SIGSEGV (Address boundary error) |
To Reproduce
Compile with
1
| exegen.js --compiler clang++ -o ckey ckey.bsq |
Expected behavior
Successful compilation + a meaningful return value.
Desktop:
- OS: macOS Catalina 10.15.4
- Bosque Version: 0.5.0-rc-1
该提问来源于开源项目:microsoft/BosqueLanguage
Partial support is incoming. Note that we use special
for the indentifiers and will need to add typechecker support:
1 2 3 4 5 6 7 8 9 10 11 12
| identifier UserId = Int;
entrypoint function main(): UserId {
let id = UserId::create(1);
let x = Set@{id};
check x.size() == 1;
return id;
}
|