Skip to content

Macro + Static in object field: undeclared identifier N if proc result #7547

@mratsim

Description

@mratsim

Another macro + static issue.

Test case:

import macros

macro foo(N: static[int]): untyped =
  result = getType(int)

type
  Foo[N: static[int]] = foo(N)

  ContainsFoo[N: static[int]] = object
    Ffoo: Foo[N]

proc initFoo(N: static[int]): Foo[N] =
  discard

proc initContainsFoo(size: static[int]): ContainsFoo[size] =
  discard

###########################################

var a: Foo[10] # Works
echo a

let b = initFoo(10) # Works
echo b

let c = ContainsFoo[5]() # Works
echo c

##########################################

let z = initContainsFoo(5) # Error: undeclared identifier: 'N'
echo z

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions