GassaFM / interpr

Toy language to learn parallel computing
MIT License
5 stars 4 forks source link

The program was compiled despite the fact that it contains an error #12

Open eakravchenko opened 4 years ago

eakravchenko commented 4 years ago

I tried to run programm

function sum (id, pr, n, a): l := id n / pr r := (id + 1) n / pr s := 0 for i := l until r: s += a[i] send(0, s)

if id == 0:
    ans := 0
    for i := 0 until pr:
        ans += recieve(i)
    print(ans)

It contains a mistake: recieve instead of receive. But I did not receive a message about CE. Instead of this I receive very strange message:

core.exception.AssertError@runner.d(206): Assertion failure

0x004270F3 in _d_assertp 0x004233A8 in long runner.Runner.evalExpression(language.Expression) at C:\programs\git\interpr\runner.d(276) 0x00423F97 in void runner.Runner.runStatement(language.Statement) at C:\programs\git\interpr\runner.d(404) 0x004246A0 in bool runner.Runner.step() at C:\programs\git\interpr\runner.d(553) 0x00424715 in bool runner.RunnerControl.step() at C:\programs\git\interpr\runner.d(587) 0x00402700 in _Dmain at C:\programs\git\interpr\interpr.d(86) 0x0042D6EB in void rt.dmain2._d_run_main2(char[][], uint, extern (C) int function(char[][])).runAll().__lambda1() 0x0042D665 in void rt.dmain2._d_run_main2(char[][], uint, extern (C) int function(char[][])).runAll() 0x0042D500 in _d_run_main2 0x00425946 in _d_run_main 0x0040280C in main at C:\Tools\dmd\windows\bin....\src\druntime\import\core\internal\entrypoint.d(34) 0x00450B9D in mainCRTStartup 0x76CB6359 in BaseThreadInitThunk 0x772D7B74 in RtlGetAppContainerNamedObjectPath 0x772D7B44 in RtlGetAppContainerNamedObjectPath

acforvs commented 4 years ago

Please check out the issue#6 you’re trying to duplicate. If you open the file (runner.d) near the given line (206), you will find out that the error pops up in case the function name cannot be recognised. So the issue is not in receiving CE itself, but in non user-friendly text.

GassaFM commented 4 years ago

There are actually two distinct issues here.

  1. cryptic message, same as #6
  2. the fact that the error is not triggered at compile time