# Macro inside constructor fails on 0.6

**URL:** <https://discourse.julialang.org/t/macro-inside-constructor-fails-on-0-6/2422>\
**Category:** General Usage\
**Tags:** macros\
**Created:** [March 3, 2017, 11:37am UTC](https://discourse.julialang.org/t/macro-inside-constructor-fails-on-0-6/2422 "2017-03-03T11:37:37Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![abelsiqueira](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abelsiqueira/32/47269_2.png) [@abelsiqueira](https://discourse.julialang.org/u/abelsiqueira)\
**Post date:** [March 3, 2017, 11:37am UTC](https://discourse.julialang.org/t/macro-inside-constructor-fails-on-0-6/2422/1 "2017-03-03T11:37:37Z")

</div>

The following code works on 0.5, but not on 0.6 (0.6.0-pre.alpha.0)

```julia
macro macroex(n)
  :(println($n))
end

type MWE
  nvar :: Int
  x0 :: Array{Float64,1}

  function MWE(nvar)
    x0 = zeros(nvar)
    @macroex nvar # <-- Fails here
    return new(nvar, x0)
  end

end

function foo()
  @macroex 5
  mwe = MWE(5)
  println(mwe.x0)
end

foo()

```

on line 11 (annotated) with `ERROR: LoadError: UndefVarError: nvar not defined`.

Any input is greatly appreciated.

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [March 3, 2017, 11:56am UTC](https://discourse.julialang.org/t/macro-inside-constructor-fails-on-0-6/2422/2 "2017-03-03T11:56:56Z")

</div>

You need $(esc(n)) in the macro; see the macro hygiene section of the manual.

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [March 3, 2017, 11:58am UTC](https://discourse.julialang.org/t/macro-inside-constructor-fails-on-0-6/2422/3 "2017-03-03T11:58:12Z")

</div>

Also note that @show is already defined to print the value of a variable.

---

<div class="post-metadata">

**Author:** ![abelsiqueira](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abelsiqueira/32/47269_2.png) [@abelsiqueira](https://discourse.julialang.org/u/abelsiqueira)\
**Post date:** [March 3, 2017, 4:17pm UTC](https://discourse.julialang.org/t/macro-inside-constructor-fails-on-0-6/2422/4 "2017-03-03T16:17:12Z")

</div>

Thank you very much, it solved my issue.
