-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Identifier expected or compiler segfault with templates over generic type in type section #23854
Comments
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() |
!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() |
🐧 Linux bisect by @juancarlospaco (collaborator)devel 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 (0 bytes)
Stats
ASTnnkStmtList.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
🤖 Bug found in |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
A slight modification to #23853, depending if we use method call syntax or function call syntax we get either identifier expected or a compiler segfault on uninitialized value
The text was updated successfully, but these errors were encountered: