# TypeNode#instance\_vars return empty array?

**URL:** https://forum.crystal-lang.org/t/typenode-instance-vars-return-empty-array/6569
**Category:** Help & Support
**Created:** [February 11, 2024, 2:11pm UTC](https://forum.crystal-lang.org/t/typenode-instance-vars-return-empty-array/6569 "2024-02-11T14:11:34Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![aiac](https://avatars.discourse-cdn.com/v4/letter/a/db5fbb/32.png) [@aiac](https://forum.crystal-lang.org/u/aiac)
#### Post date: [February 11, 2024, 2:11pm UTC](https://forum.crystal-lang.org/t/typenode-instance-vars-return-empty-array/6569/1 "2024-02-11T14:11:34Z")

</div>

code

```crystal

class Book
  property name : String
  property price : Float32

  def initialize(@name, @price)
  end
end

macro foo(n)
  {% if ["Path"].includes? n.class_name %}
    p {{ n.resolve }}
    p "fields: {{ n.resolve.instance_vars.map &.name }}"
  {% end %}
end

foo Book

```

output:

```auto
Book
"fields: []"

```

---

<div class="post-metadata">

### Author: ![Blacksmoke16](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/blacksmoke16/32/1241_2.png) [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)
#### Post date: [February 11, 2024, 3:14pm UTC](https://forum.crystal-lang.org/t/typenode-instance-vars-return-empty-array/6569/2 "2024-02-11T15:14:03Z")

</div>

`#instance_vars` only works in the context of a method. In all other cases it’ll return an empty array, like it does here.

---

<div class="post-metadata">

### Author: ![aiac](https://avatars.discourse-cdn.com/v4/letter/a/db5fbb/32.png) [@aiac](https://forum.crystal-lang.org/u/aiac)
#### Post date: [February 13, 2024, 4:35am UTC](https://forum.crystal-lang.org/t/typenode-instance-vars-return-empty-array/6569/3 "2024-02-13T04:35:06Z")

</div>

why not raise an compile time error?

---

<div class="post-metadata">

### Author: ![Blacksmoke16](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/blacksmoke16/32/1241_2.png) [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)
#### Post date: [February 13, 2024, 4:54am UTC](https://forum.crystal-lang.org/t/typenode-instance-vars-return-empty-array/6569/4 "2024-02-13T04:54:43Z")

</div>

Related: [`TypeNode#instance_vars` should error when instance vars are not setup · Issue #10662 · crystal-lang/crystal · GitHub](https://github.com/crystal-lang/crystal/issues/10662) and [Unions and macro methods - #8 by straight-shoota](https://forum.crystal-lang.org/t/unions-and-macro-methods/3243/8)
