many bugfixes for js (#14158)
* many bugfixes for js fixes #12672, fixes #14153, closes #14123, closes #11331, fixes #11783, fixes #13966, fixes #14087, fixes #14117, closes #12256. mostly fixes the fact that it was allowed to assign to newly created temp variables. additionally attempts to get rid of null initialized seqs/strings (though they might pop up here and there); this simplifies a lot of things and makes code size smaller. even if null seqs/strings pop up here and there it's still better than all those bugs existing. * formatting fixes * CI fixes * more CI fixes
This commit is contained in:
parent
a297c016fa
commit
707367e1ca
10 changed files with 240 additions and 65 deletions
|
|
@ -130,20 +130,6 @@ proc reprAux(result: var string, p: pointer, typ: PNimType, cl: var ReprClosure)
|
|||
|
||||
proc reprArray(a: pointer, typ: PNimType,
|
||||
cl: var ReprClosure): string {.compilerRtl.} =
|
||||
var isNilArrayOrSeq: bool
|
||||
# isnil is not enough here as it would try to deref `a` without knowing what's inside
|
||||
{. emit: """
|
||||
if (`a` == null) {
|
||||
`isNilArrayOrSeq` = true;
|
||||
} else if (`a`[0] == null) {
|
||||
`isNilArrayOrSeq` = true;
|
||||
} else {
|
||||
`isNilArrayOrSeq` = false;
|
||||
};
|
||||
""" .}
|
||||
if typ.kind == tySequence and isNilArrayOrSeq:
|
||||
return "nil"
|
||||
|
||||
# We prepend @ to seq, the C backend prepends the pointer to the seq.
|
||||
result = if typ.kind == tySequence: "@[" else: "["
|
||||
var len: int = 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue