Progress
fixes the documentation of typeclasses
The parser has been changed, now you need to use type RecordType = (tuple or object)
ro declare types classes starting with tuple or object instead of type RecordType = tuple or object
.
forbids using system.any
for type conversions
fixes #14255; Crash in compiler when using system.any by accident.
var a = newSeq[bool](1000)
if any(a):
echo "ok?"
Now it gives proper an error message => "Error: illegal type conversion to 'any'".
fixes templates with untyped parameters resolve private fields wrongly in generics
fixes #3770; templates with untyped parameters resolve private fields wrongly in generics.
type
Noice* = object
hidden: int
template jjj*: Noice =
Noice(hidden: 15)
# bug #3770
import m3770
doAssert $jjj() == "(hidden: 15)" # works
proc someGeneric(_: type) =
doAssert $jjj() == "(hidden: 15)"
someGeneric(int)
Now the example compiles.
(WIP) adds compiler support for object construction shorthand
WIP adds compiler support for object construction shorthand.
type
Vector = object
a: int = 999
b, c: int
block: # positional construction
## It specifies all the unnamed fields
var x = Vector(1, 2, 3)
doAssert x.b == 2
block:
## unnamed fields can be mixed with named fields
block:
var x = Vector(a: 1, 2, 3)
doAssert x.c == 3
block:
var x = Vector(1, b: 2, 3)
doAssert x.c == 3
block:
var x = Vector(1, 2, c: 3)
doAssert x.c == 3
block:
## Object variants support unnamed fields for tags, which should be known at the compile time.
type
Color = enum
Red, Blue, Yellow
Factor = object
id: int
case flag: Color
of Red:
num: int
of Blue, Yellow:
done: bool
name: string
block:
var x = Factor(1, Red, 2, "1314")
doAssert x.num == 2
block:
var x = Factor(1, Blue, true, "1314")
doAssert x.done == true
block:
var x = Factor(1, Yellow, false, "1314")
doAssert x.done == false
type
Ciao = object
id: int
case flag: bool = false
of true:
num: int
of false:
done: bool
name: string
block:
var x = Ciao(12, false, false, "123")
doAssert x.done == false
block:
var x = Ciao(12, flag: true, 1, "123")
doAssert x.num == 1
Weekly collection
https://forum.nim-lang.org/t/9908 (2/19)
https://forum.nim-lang.org/t/9940 (2/26)
https://forum.nim-lang.org/t/9970 (3/5)
https://forum.nim-lang.org/t/9989 (3/12)
https://forum.nim-lang.org/t/10024 (3/19)
Participating in contributions
Following The Roadmap 2023 for community building , you could join us in the matrix space where we discuss how to build a community. We appreciate doable suggestions and helps, such as improving the workflow, implementing the roadmap, suggesting doable tasks, reviewing code from contributors. United we stand. We shall work together to make the community thrive.
Sponsorship
Many thanks to Yepoleb, lenis0012, pietroppeter, Clonkk, mode80, Phil, CxPlanner, shirleyquirk, elcritch, geotre, thinkwelltwd, xrfez, enthus1ast, piertoni, Dnanilem, gemath for sponsoring me on GitHub.
Top comments (0)