compiler: create var in `shortcut_equate` only if needed
authorJean Privat <jean@pryen.org>
Mon, 5 Jan 2015 02:18:19 +0000 (21:18 -0500)
committerJean Privat <jean@pryen.org>
Mon, 5 Jan 2015 02:18:19 +0000 (21:18 -0500)
Signed-off-by: Jean Privat <jean@pryen.org>

src/compiler/separate_compiler.nit

index 13f0bd7..54c51b2 100644 (file)
@@ -1143,10 +1143,10 @@ class SeparateCompilerVisitor
                        self.add("\{")
                end
                if not self.compiler.modelbuilder.toolcontext.opt_no_shortcut_equate.value and (mmethod.name == "==" or mmethod.name == "!=") then
-                       if res == null then res = self.new_var(bool_type)
-                       # Recv is not null, thus is arg is, it is easy to conclude (and respect the invariants)
+                       # Recv is not null, thus if arg is, it is easy to conclude (and respect the invariants)
                        var arg = arguments[1]
                        if arg.mcasttype isa MNullType then
+                               if res == null then res = self.new_var(bool_type)
                                if mmethod.name == "==" then
                                        self.add("{res} = 0; /* arg is null but recv is not */")
                                else