Comments (3)
!nim c
import std/bitops
const WordBitWidth = sizeof(pointer) * 8
func wordsRequired*(bits: int): int {.inline.} =
const divShiftor = fastLog2(uint32(WordBitWidth))
result = (bits + WordBitWidth - 1) shr divShiftor
type
Algebra* = enum
BLS12_381
BigInt*[bits: static int] = object
limbs*: array[wordsRequired(bits), uint]
Fr*[Name: static Algebra] = object
residue_form*: BigInt[255]
Fp*[Name: static Algebra] = object
residue_form*: BigInt[381]
FF*[Name: static Algebra] = Fp[Name] or Fr[Name]
type
EC_ShortW_Aff*[F] = object
## Elliptic curve point for a curve in Short Weierstrass form
## y² = x³ + a x + b
##
## over a field F
x*, y*: F
type FieldKind* = enum
kBaseField
kScalarField
template getBigInt*[Name: static Algebra](T: type FF[Name]): untyped =
## Get the underlying BigInt type.
typeof(default(T).mres)
func bits*[Name: static Algebra](T: type FF[Name]): static int =
T.getBigInt().bits
template getScalarField*(EC: type EC_ShortW_Aff): untyped =
Fr[EC.F.Name]
# ------------------------------------------------------------------------------
type
ECFFT_Descriptor*[EC] = object
## Metadata for FFT on Elliptic Curve
order*: int
# rootsOfUnity*: ptr UncheckedArray[BigInt[EC.getScalarField().bits()]] # Error: in expression 'EC.getScalarField()': identifier expected, but found 'EC.getScalarField'
rootsOfUnity*: ptr UncheckedArray[BigInt[getScalarField(EC).bits()]] # Compiler SIGSEGV: Illegal Storage Access
func new*(T: type ECFFT_Descriptor): T =
discard
# ------------------------------------------------------------------------------
proc main() =
let ctx = ECFFT_Descriptor[EC_ShortW_Aff[Fp[BLS12_381]]].new()
main()
from nim.
Notice that if not in an UncheckedArray or a seq, the following compiles
import std/bitops
const WordBitWidth = sizeof(pointer) * 8
func wordsRequired*(bits: int): int {.inline.} =
const divShiftor = fastLog2(uint32(WordBitWidth))
result = (bits + WordBitWidth - 1) shr divShiftor
type
Algebra* = enum
BLS12_381
BigInt*[bits: static int] = object
limbs*: array[wordsRequired(bits), uint]
Fr*[Name: static Algebra] = object
residue_form*: BigInt[255]
Fp*[Name: static Algebra] = object
residue_form*: BigInt[381]
FF*[Name: static Algebra] = Fp[Name] or Fr[Name]
type
EC_ShortW_Aff*[F] = object
## Elliptic curve point for a curve in Short Weierstrass form
## y² = x³ + a x + b
##
## over a field F
x*, y*: F
template getScalarField*(EC: type EC_ShortW_Aff): untyped =
Fr[EC.F.Name]
# ------------------------------------------------------------------------------
type IpaProof*[logN: static int, EC] = object
L*{.align: 64.}: array[logN, EC]
R*{.align: 64.}: array[logN, EC]
a0*: getScalarField(EC) # compiles
# a0*: EC.getScalarField() # Error: in expression 'EC.getScalarField()': identifier expected, but found 'EC.getScalarField'
func new*(T: type IpaProof): T =
discard
# ------------------------------------------------------------------------------
proc main() =
let proof = IpaProof[8, EC_ShortW_Aff[Fp[BLS12_381]]].new()
main()
from nim.
🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL
Output
Error: Command failed: nim c --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
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:38
- Finished
2024-07-18T13:01:38
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
stable 👎 FAIL
Output
Error: Command failed: nim c --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
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:42
- Finished
2024-07-18T13:01:42
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
2.0.4 👎 FAIL
Output
Error: Command failed: nim c --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
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:45
- Finished
2024-07-18T13:01:45
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
2.0.0 👎 FAIL
Output
Error: Command failed: nim c --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
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:48
- Finished
2024-07-18T13:01:49
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
1.6.20 👎 FAIL
Output
Error: Command failed: nim c --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
/home/runner/work/Nim/Nim/temp.nim(39, 60) Error: type mismatch: got <typedesc[EC]>
but expected one of:
template getScalarField(EC: type EC_ShortW_Aff): untyped
first type mismatch at position: 1
required type for EC: typedesc[EC_ShortW_Aff]
but expression 'EC' is of type: typedesc[EC]
expression: getScalarField(EC)
fatal.nim(54) sysFatal
Error: unhandled exception: options.nim(662, 14) `false` errGenerated [AssertionDefect]
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:52
- Finished
2024-07-18T13:01:52
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
1.4.8 👎 FAIL
Output
Error: Command failed: nim c --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
/home/runner/work/Nim/Nim/temp.nim(39, 60) Error: type mismatch: got <type EC>
but expected one of:
template getScalarField(EC: type EC_ShortW_Aff): untyped
first type mismatch at position: 1
required type for EC: type EC_ShortW_Aff
but expression 'EC' is of type: type EC
expression: getScalarField(EC)
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:55
- Finished
2024-07-18T13:01:55
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
1.2.18 👎 FAIL
Output
Error: Command failed: nim c --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
/home/runner/work/Nim/Nim/temp.nim(39, 60) Error: type mismatch: got <type EC>
but expected one of:
template getScalarField(EC: type EC_ShortW_Aff): untyped
first type mismatch at position: 1
required type for EC: type EC_ShortW_Aff
but expression 'EC' is of type: type EC
expression: getScalarField(EC)
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:57
- Finished
2024-07-18T13:01:57
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
1.0.10 👎 FAIL
Output
Error: Command failed: nim c --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
/home/runner/work/Nim/Nim/temp.nim(39, 60) Error: type mismatch: got <type EC>
but expected one of:
template getScalarField(EC: type EC_ShortW_Aff): untyped
first type mismatch at position: 1
required type for EC: type EC_ShortW_Aff
but expression 'EC' is of type: type EC
expression: getScalarField(EC)
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T13:01:59
- Finished
2024-07-18T13:02:00
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("bitops")
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("WordBitWidth"),
newEmptyNode(),
nnkInfix.newTree(
newIdentNode("*"),
nnkCall.newTree(
newIdentNode("sizeof"),
newIdentNode("pointer")
),
newLit(8)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("wordsRequired")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("bits"),
newIdentNode("int"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("inline")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("divShiftor"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("fastLog2"),
nnkCall.newTree(
newIdentNode("uint32"),
newIdentNode("WordBitWidth")
)
)
)
),
nnkAsgn.newTree(
newIdentNode("result"),
nnkInfix.newTree(
newIdentNode("shr"),
nnkPar.newTree(
nnkInfix.newTree(
newIdentNode("-"),
nnkInfix.newTree(
newIdentNode("+"),
newIdentNode("bits"),
newIdentNode("WordBitWidth")
),
newLit(1)
)
),
newIdentNode("divShiftor")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BigInt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
nnkCall.newTree(
newIdentNode("wordsRequired"),
newIdentNode("bits")
),
newIdentNode("uint")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fr")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(255)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("residue_form")
),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
newLit(381)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FF")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
),
nnkBracketExpr.newTree(
newIdentNode("Fr"),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("EC_ShortW_Aff")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("x")
),
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("y")
),
newIdentNode("F"),
newEmptyNode()
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newCommentStmtNode("Get the underlying BigInt type."),
nnkCall.newTree(
newIdentNode("typeof"),
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("default"),
newIdentNode("T")
),
newIdentNode("mres")
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("bits")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
nnkBracketExpr.newTree(
newIdentNode("FF"),
newIdentNode("Name")
)
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("T"),
newIdentNode("getBigInt")
)
),
newIdentNode("bits")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getScalarField")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("EC"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("EC_ShortW_Aff")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkBracketExpr.newTree(
newIdentNode("Fr"),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("EC"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ECFFT_Descriptor")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("EC"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("order")
),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("rootsOfUnity")
),
nnkPtrTy.newTree(
nnkBracketExpr.newTree(
newIdentNode("UncheckedArray"),
nnkBracketExpr.newTree(
newIdentNode("BigInt"),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
newIdentNode("getScalarField"),
newIdentNode("EC")
),
newIdentNode("bits")
)
)
)
)
),
newEmptyNode()
)
)
)
)
),
nnkFuncDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("new")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("T"),
nnkIdentDefs.newTree(
newIdentNode("T"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ECFFT_Descriptor")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("ECFFT_Descriptor"),
nnkBracketExpr.newTree(
newIdentNode("EC_ShortW_Aff"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("BLS12_381")
)
)
),
newIdentNode("new")
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
20.4
- Created
2024-07-18T13:01:11Z
- Comments
2
- Commands
nim c --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 24 minutes
bisecting 8
commits at 0
commits per second
from nim.
Related Issues (20)
- Regression - cannot instantiate Maybe generic arguments are missing HOT 5
- Nested generic/static parameter: undeclared identifier in typesections HOT 2
- 2.2.0 rc1 regression with cdecl functions
- Warnings missing when compiling the same file twice HOT 4
- `genericsOpenSym` not working when additional generally non-matching symbol with same name is present HOT 1
- nimsuggest crashes when using `--mm:arc/orc` and if an object that contains `string` or `seq` is constructed HOT 2
- ARC hooks missing when sinking generic typeclass HOT 3
- Generic concepts not compatible with openarray HOT 2
- os module uses wrong path separator in nimvm when cross-compiling HOT 2
- Objects can protect illegal recursion but tuples cant HOT 4
- Extract/move can cause SIGSEGV error when used with 2D sequences HOT 7
- Nested dirty template in generic proc HOT 11
- Disambiguating module of template call with shared symbol prevents building
- succ raise OverflowDefect, succ does not handle unsigned integers correctly HOT 1
- Useless empty C files with arc/orc
- Identifier exported as typename in one module and `template` in another can't be used in `template`
- JS Browser sourcemap support | net::ERR_FILE_NOT_FOUND
- Call operator fails to bind across imports HOT 2
- Compiler infers `sink` in return type from `auto` HOT 3
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.