adds --legacy:noAsmSemSymbol

This commit is contained in:
ringabout
2024-12-26 21:35:29 +08:00
parent 86d6f71f5a
commit 6e3037372d
6 changed files with 9 additions and 6 deletions

View File

@@ -17,7 +17,7 @@ rounding guarantees (via the
- Unknown warnings and hints now gives warnings `warnUnknownNotes` instead of
errors.
- With `-d:nimPreviewAsmSemSymbol`, backticked symbols are type checked in the `asm/emit` statements.
- backticked symbols are type checked in the `asm/emit` statements. Use `--legacy:noAsmSemSymbol` for a transitional period.
## Standard library additions and changes

View File

@@ -173,3 +173,5 @@ proc initDefines*(symbols: StringTableRef) =
defineSymbol("nimHasXorSet")
defineSymbol("nimHasLegacyNoStrictDefs")
defineSymbol("nimHasAsmSemSymbol")

View File

@@ -10,7 +10,6 @@ define:nimPreviewProcConversion
define:nimPreviewRangeDefault
define:nimPreviewNonVarDestructor
define:nimPreviewCheckedClose
define:nimPreviewAsmSemSymbol
threads:off
#import:"$projectpath/testability"

View File

@@ -250,6 +250,8 @@ type
## Old transformation for closures in JS backend
noStrictDefs
## disable "strictdefs"
noAsmSemSymbol
## disable type checking for backticked symbols in the `asm/emit` statements
SymbolFilesOption* = enum
disabledSf, writeOnlySf, readOnlySf, v2Sf, stressTest

View File

@@ -637,10 +637,11 @@ proc semAsmOrEmit*(con: PContext, n: PNode, marker: char): PNode =
# XXX what to do here if 'amb' is true?
if e != nil:
incl(e.flags, sfUsed)
if isDefined(con.config, "nimPreviewAsmSemSymbol"):
result.add con.semExprWithType(con, newSymNode(e), {efTypeAllowed})
else:
if noAsmSemSymbol in con.config.legacyFeatures:
result.add newSymNode(e)
else:
result.add con.semExprWithType(con, newSymNode(e), {efTypeAllowed})
else:
result.add newStrNode(nkStrLit, sub)
else:

View File

@@ -38,7 +38,6 @@ switch("define", "nimPreviewHashRef")
switch("define", "nimPreviewRangeDefault")
switch("define", "nimPreviewNonVarDestructor")
switch("define", "nimPreviewCheckedClose")
switch("define", "nimPreviewAsmSemSymbol")
switch("warningAserror", "UnnamedBreak")
when not defined(testsConciseTypeMismatch):