fixes #19015 [backport:1.6] (#19204)

This commit is contained in:
Andreas Rumpf
2021-12-04 07:42:58 +01:00
committed by GitHub
parent 23c117a950
commit d584dd5b99
4 changed files with 10 additions and 2 deletions

View File

@@ -11,6 +11,9 @@
or define your own `Math.trunc` polyfill using the [`emit` pragma](https://nim-lang.org/docs/manual.html#implementation-specific-pragmas-emit-pragma). Nim uses
`Math.trunc` for the division and modulo operators for integers.
- Optional parameters in combination with `: body` syntax (RFC #405) are now opt-in via
`experimental:flexibleOptionalParams`.
## Standard library additions and changes
- `macros.parseExpr` and `macros.parseStmt` now accept an optional

View File

@@ -207,7 +207,8 @@ type
strictNotNil,
overloadableEnums,
strictEffects,
unicodeOperators
unicodeOperators,
flexibleOptionalParams
LegacyFeature* = enum
allowSemcheckedAstModification,

View File

@@ -2461,7 +2461,8 @@ proc matchesAux(c: PContext, n, nOrig: PNode, m: var TCandidate, marker: var Int
if m.callee.n[f].kind != nkSym:
internalError(c.config, n[a].info, "matches")
noMatch()
if a >= firstArgBlock: f = max(f, m.callee.n.len - (n.len - a))
if flexibleOptionalParams in c.features and a >= firstArgBlock:
f = max(f, m.callee.n.len - (n.len - a))
formal = m.callee.n[f].sym
m.firstMismatch.kind = kTypeMismatch
if containsOrIncl(marker, formal.position) and container.isNil:

View File

@@ -1,3 +1,6 @@
{.experimental: "flexibleOptionalParams".}
# https://github.com/nim-lang/RFCs/issues/405
template main =