Comments (4)
!nim js
proc foo =
var x: range[1.0 .. 5.0] = 2.0
case x
of 1.0..2.0:
echo 1
else:
echo 3
foo()
from nim.
🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL
Output
Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
fatal.nim(53) sysFatal
Error: unhandled exception: field 'intVal' is not accessible for type 'TNode' using 'kind = nkFloatLit' [FieldDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-04-10T14:24:09
- Finished
2024-04-10T14:24:09
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("x"),
nnkBracketExpr.newTree(
newIdentNode("range"),
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(5.0)
)
),
newLit(2.0)
)
),
nnkCaseStmt.newTree(
newIdentNode("x"),
nnkOfBranch.newTree(
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(2.0)
),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(1)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(3)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
stable 👎 FAIL
Output
Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
fatal.nim(53) sysFatal
Error: unhandled exception: field 'intVal' is not accessible for type 'TNode' using 'kind = nkFloatLit' [FieldDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-04-10T14:24:09
- Finished
2024-04-10T14:24:10
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("x"),
nnkBracketExpr.newTree(
newIdentNode("range"),
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(5.0)
)
),
newLit(2.0)
)
),
nnkCaseStmt.newTree(
newIdentNode("x"),
nnkOfBranch.newTree(
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(2.0)
),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(1)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(3)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
2.0.2 👎 FAIL
Output
Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
fatal.nim(53) sysFatal
Error: unhandled exception: field 'intVal' is not accessible for type 'TNode' using 'kind = nkFloatLit' [FieldDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-04-10T14:24:10
- Finished
2024-04-10T14:24:10
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("x"),
nnkBracketExpr.newTree(
newIdentNode("range"),
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(5.0)
)
),
newLit(2.0)
)
),
nnkCaseStmt.newTree(
newIdentNode("x"),
nnkOfBranch.newTree(
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(2.0)
),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(1)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(3)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
1.6.14 👎 FAIL
Output
Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
fatal.nim(54) sysFatal
Error: unhandled exception: field 'intVal' is not accessible for type 'TNode' using 'kind = nkFloatLit' [FieldDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-04-10T14:24:13
- Finished
2024-04-10T14:24:13
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("x"),
nnkBracketExpr.newTree(
newIdentNode("range"),
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(5.0)
)
),
newLit(2.0)
)
),
nnkCaseStmt.newTree(
newIdentNode("x"),
nnkOfBranch.newTree(
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(2.0)
),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(1)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(3)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
1.4.8 👎 FAIL
Output
Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
fatal.nim(49) sysFatal
Error: unhandled exception: 'intVal' is not accessible using discriminant 'kind' of type 'TNode' [FieldDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-04-10T14:24:15
- Finished
2024-04-10T14:24:16
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("x"),
nnkBracketExpr.newTree(
newIdentNode("range"),
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(5.0)
)
),
newLit(2.0)
)
),
nnkCaseStmt.newTree(
newIdentNode("x"),
nnkOfBranch.newTree(
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(2.0)
),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(1)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(3)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
1.2.18 👎 FAIL
Output
Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
fatal.nim(49) sysFatal
Error: unhandled exception: 'intVal' is not accessible using discriminant 'kind' of type 'TNode' [FieldError]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-04-10T14:24:18
- Finished
2024-04-10T14:24:18
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("x"),
nnkBracketExpr.newTree(
newIdentNode("range"),
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(5.0)
)
),
newLit(2.0)
)
),
nnkCaseStmt.newTree(
newIdentNode("x"),
nnkOfBranch.newTree(
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(2.0)
),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(1)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(3)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
1.0.10 👎 FAIL
Output
Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
fatal.nim(39) sysFatal
Error: unhandled exception: 'intVal' is not accessible using discriminant 'kind' of type 'TNode' [FieldError]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-04-10T14:24:20
- Finished
2024-04-10T14:24:20
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("x"),
nnkBracketExpr.newTree(
newIdentNode("range"),
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(5.0)
)
),
newLit(2.0)
)
),
nnkCaseStmt.newTree(
newIdentNode("x"),
nnkOfBranch.newTree(
nnkInfix.newTree(
newIdentNode(".."),
newLit(1.0),
newLit(2.0)
),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(1)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit(3)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
20.1
- Created
2024-04-10T14:23:37Z
- Comments
1
- Commands
nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
🤖 Bug found in 14 minutes
bisecting 7
commits at 0
commits per second
from nim.
Culprit
Line 1062 in 779bc84
transferRange
needs to be true for range
of float
, it should probably be true for any range
with a big enough size
from nim.
Well, I have had a PR to fix this issue
The culprit is that let typeKind = skipTypes(n[0].typ, abstractVar).kind
doesn't skip range types. Anyway the old logic is not good enough that as long as there are int/float types, if
is generated instead of case
no matter whether there are range of int/float. It causes performance downgrade.
import std/jsconsole
case 1
of 1:
console.log 1
of 2:
console.log 2
else:
console.log 3
generates wrongly formated JS code
if (1 == 1){ console.log(1);
}
else if (1 == 2){ console.log(2);
}
else{
console.log(3);
}
Instead of beautifully formatted switch-case
switch (1) {
case 1:
console.log(1);
break;
case 2:
console.log(2);
break;
default:
console.log(3);
break;
}
from nim.
Related Issues (20)
- Improve the orthogonality of implicit generics with typeclasses
- Enum overloading regression HOT 4
- Nimsuggest - Methods marked with {.base.} trigger error on chk HOT 3
- Ref array causing Segfault HOT 4
- osproc.startProcess should support "not following symlinks" HOT 2
- When `move` meets` sink`, `= sink` hook function is not called HOT 4
- [ignore] bisect HOT 7
- Error: type mismatch: got <typedesc[A]>, but expected one of: A = proc (){.closure.}
- Default object values silently override generic types
- Enum Overloading Regression? HOT 4
- async `and` swallows errors
- Async `finally` swallows errors when it contains an `await` wrapped by `try/except`
- The `when nimvm` statement fails to compile when in a file called nimvm.nim HOT 4
- Regression from 2.0 to `devel` with `dirty` template HOT 2
- Async memory leak when raising exception on ORC HOT 1
- unicode.splitWhitespace() and strutils.splitWhitespace() have different results for ASCII string
- Wrong stack trace when exception is raised in template HOT 1
- Error: cannot evaluate at compile time: foo HOT 4
- nim check crashes
- Any differnece between value types and reference types for `=sink` ? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nim.