# The location of the icode (if any)
readable writable var _location: nullable Location = null
+
+ # Is the icode side effect free?
+ fun is_pure: Bool do return false
end
# An icode that uses no registers (no args)
super(e)
_code = c
end
+
+ redef readable writable var _is_pure: Bool = false
end
# A register assigment
super(e)
_result = r
end
+
+ redef fun is_pure do return true
end
# An attribute read access
super(r)
_property = p
end
+
+ redef fun is_pure do return true
end
# An attribute assignment
super(r)
_property = p
end
+
+ redef fun is_pure do return true
end
# A type check
super(e)
_stype = t
end
+
+ redef fun is_pure do return true
end
# The 'is' operator
do
super
end
+
+ redef fun is_pure do return true
end
# The unary 'not' operation
do
super
end
+
+ redef fun is_pure do return true
end
# Evaluate body once them return the same value again and again
do
_closure_decl = c
end
+
+ redef fun is_pure do return true
end
#################################################