diff --git a/src/object.cr b/src/object.cr
index 7b227b30870665ff2732d6408fc5ba7b23c7e126..3e2d855096473b12f9ba412ce538e4dbf7bf82a4 100644
--- a/src/object.cr
+++ b/src/object.cr
@@ -67,6 +67,8 @@ class Object
 
   macro getter(*names)
     {% for name in names %}
+      {% name = name.var if name.is_a?(DeclareVar) %}
+
       def {{name.id}}
         @{{name.id}}
       end
@@ -75,6 +77,8 @@ class Object
 
   macro getter!(*names)
     {% for name in names %}
+      {% name = name.var if name.is_a?(DeclareVar) %}
+
       def {{name.id}}?
         @{{name.id}}
       end
@@ -87,6 +91,8 @@ class Object
 
   macro getter?(*names)
     {% for name in names %}
+      {% name = name.var if name.is_a?(DeclareVar) %}
+
       def {{name.id}}?
         @{{name.id}}
       end
@@ -95,8 +101,13 @@ class Object
 
   macro setter(*names)
     {% for name in names %}
-      def {{name.id}}=(@{{name.id}})
-      end
+      {% if name.is_a?(DeclareVar) %}
+        def {{name.var.id}}=(@{{name.var.id}} : {{name.type}})
+        end
+      {% else %}
+        def {{name.id}}=(@{{name.id}})
+        end
+      {% end %}
     {% end %}
   end