]> Cypherpunks repositories - gostls13.git/commitdiff
handle negative numeric constants in import.
authorRuss Cox <rsc@golang.org>
Fri, 26 Sep 2008 18:44:20 +0000 (11:44 -0700)
committerRuss Cox <rsc@golang.org>
Fri, 26 Sep 2008 18:44:20 +0000 (11:44 -0700)
(fixes bugs/bug106)

package bug0
export const A = -1

package bug1
import "bug0"

R=ken
DELTA=21  (19 added, 0 deleted, 2 changed)
OCL=15901
CL=15968

src/cmd/gc/go.y

index 049b977192ae50d45eee56781667a4d630a1a02a..f84a57afe9bc9f34b13f552036cd20834baf2565 100644 (file)
@@ -56,6 +56,8 @@
 %type  <type>          structtype interfacetype convtype
 %type  <type>          Achantype Bchantype
 
+%type  <val>           hidden_constant
+
 %left                  LOROR
 %left                  LANDAND
 %left                  LCOMM
@@ -1555,11 +1557,11 @@ hidden_import:
        }
 
        /* constants */
-|      LCONST hidden_importsym LLITERAL
+|      LCONST hidden_importsym hidden_constant
        {
                doimportc1($2, &$3);
        }
-|      LCONST hidden_importsym hidden_importsym LLITERAL
+|      LCONST hidden_importsym hidden_importsym hidden_constant
        {
                doimportc2($2, $3, &$4);
        }
@@ -1616,6 +1618,23 @@ hidden_import:
                doimport9($2, $3);
        }
 
+hidden_constant:
+       LLITERAL
+|      '-' LLITERAL
+       {
+               $$ = $2;
+               switch($$.ctype){
+               case CTINT:
+                       mpnegfix($$.u.xval);
+                       break;
+               case CTFLT:
+                       mpnegflt($$.u.fval);
+                       break;
+               default:
+                       yyerror("bad negated constant");
+               }
+       }
+
 isym:
        sym1 '.' sym2
        {