nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
icode: discard unused pure ICode expressions
[nit.git]
/
src
/
icode
/
icode_base.nit
diff --git
a/src/icode/icode_base.nit
b/src/icode/icode_base.nit
index
f46ff5b
..
6a822e3
100644
(file)
--- a/
src/icode/icode_base.nit
+++ b/
src/icode/icode_base.nit
@@
-88,6
+88,9
@@
abstract class ICode
# The location of the icode (if any)
readable writable var _location: nullable Location = null
# 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)
end
# An icode that uses no registers (no args)
@@
-274,6
+277,8
@@
special ICodeN
super(e)
_code = c
end
super(e)
_code = c
end
+
+ redef readable writable var _is_pure: Bool = false
end
# A register assigment
end
# A register assigment
@@
-286,6
+291,8
@@
special ICode1
super(e)
_result = r
end
super(e)
_result = r
end
+
+ redef fun is_pure do return true
end
# An attribute read access
end
# An attribute read access
@@
-300,6
+307,8
@@
special ICode1
super(r)
_property = p
end
super(r)
_property = p
end
+
+ redef fun is_pure do return true
end
# An attribute assignment
end
# An attribute assignment
@@
-329,6
+338,8
@@
special ICode1
super(r)
_property = p
end
super(r)
_property = p
end
+
+ redef fun is_pure do return true
end
# A type check
end
# A type check
@@
-343,6
+354,8
@@
special ICode1
super(e)
_stype = t
end
super(e)
_stype = t
end
+
+ redef fun is_pure do return true
end
# The 'is' operator
end
# The 'is' operator
@@
-353,6
+366,8
@@
special ICode2
do
super
end
do
super
end
+
+ redef fun is_pure do return true
end
# The unary 'not' operation
end
# The unary 'not' operation
@@
-363,6
+378,8
@@
special ICode1
do
super
end
do
super
end
+
+ redef fun is_pure do return true
end
# Evaluate body once them return the same value again and again
end
# Evaluate body once them return the same value again and again
@@
-383,6
+400,8
@@
special ICode0
do
_closure_decl = c
end
do
_closure_decl = c
end
+
+ redef fun is_pure do return true
end
#################################################
end
#################################################