Commit c3d841f5 authored by Russ Cox's avatar Russ Cox

handle negative numeric constants in import.

(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
parent ac055793
...@@ -56,6 +56,8 @@ ...@@ -56,6 +56,8 @@
%type <type> structtype interfacetype convtype %type <type> structtype interfacetype convtype
%type <type> Achantype Bchantype %type <type> Achantype Bchantype
%type <val> hidden_constant
%left LOROR %left LOROR
%left LANDAND %left LANDAND
%left LCOMM %left LCOMM
...@@ -1555,11 +1557,11 @@ hidden_import: ...@@ -1555,11 +1557,11 @@ hidden_import:
} }
/* constants */ /* constants */
| LCONST hidden_importsym LLITERAL | LCONST hidden_importsym hidden_constant
{ {
doimportc1($2, &$3); doimportc1($2, &$3);
} }
| LCONST hidden_importsym hidden_importsym LLITERAL | LCONST hidden_importsym hidden_importsym hidden_constant
{ {
doimportc2($2, $3, &$4); doimportc2($2, $3, &$4);
} }
...@@ -1616,6 +1618,23 @@ hidden_import: ...@@ -1616,6 +1618,23 @@ hidden_import:
doimport9($2, $3); 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: isym:
sym1 '.' sym2 sym1 '.' sym2
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment