]> Cypherpunks repositories - gostls13.git/commitdiff
assign nil to interface
authorKen Thompson <ken@golang.org>
Wed, 18 Jun 2008 01:07:40 +0000 (18:07 -0700)
committerKen Thompson <ken@golang.org>
Wed, 18 Jun 2008 01:07:40 +0000 (18:07 -0700)
SVN=123256

src/cmd/6g/gen.c
src/cmd/gc/walk.c

index e1b596f1abc0158a869cd35be1f6a15bbdc4e144..b6120d7755aa8e57fc53ceaa7f0f28bbd1ecb54d 100644 (file)
@@ -729,7 +729,7 @@ cgen_as(Node *nl, Node *nr, int op)
        if(tl == T)
                return;
 
-       if(nr == N) {
+       if(nr == N || isnil(nr)) {
                if(isfat(tl)) {
                        /* clear a fat object */
                        if(debug['g'])
index c40cabd8f4bd86bba509ea682d7dd9e8dbd5d4ff..16f0c2ce3e68ea626012089604c6ccd071ffa3bb 100644 (file)
@@ -43,9 +43,8 @@ loop:
        if(n->op != ONAME)
                dynlineno = n->lineno;  // for diagnostics
 
-       if(debug['w'] > 1 && top == Etop)
-               if(n->op != OLIST)
-                       dump("walk-before", n);
+       if(debug['w'] > 1 && top == Etop && n->op != OLIST)
+               dump("walk-before", n);
 
        t = T;
        et = Txxx;
@@ -218,7 +217,6 @@ loop:
 
                walktype(l, Elv);
                walktype(r, Erv);
-
                if(l == N || l->type == T)
                        goto ret;
 
@@ -233,6 +231,7 @@ loop:
                        }
                        goto ret;
                }
+
                l = ascompatee(n->op, &n->left, &n->right);
                if(l != N)
                        *n = *reorder3(l);
@@ -662,8 +661,8 @@ badt:
        goto ret;
 
 ret:
-       if(debug['w'] && top == Etop)
-               dump("walk-after", n);
+       if(debug['w'] && top == Etop && n != N)
+               dump("walk", n);
 
        ullmancalc(n);
        dynlineno = lno;