Commit 811e59f2 authored by Russ Cox's avatar Russ Cox

named string type bugs

R=ken
OCL=32244
CL=32244
parent 03b25a92
...@@ -2715,7 +2715,9 @@ stringop(Node *n, int top, NodeList **init) ...@@ -2715,7 +2715,9 @@ stringop(Node *n, int top, NodeList **init)
break; break;
case OSLICE: case OSLICE:
args = list1(n->left); r = nod(OCONV, n->left, N);
r->type = types[TSTRING];
args = list1(r);
// sys_slicestring(s, lb, hb) // sys_slicestring(s, lb, hb)
r = nod(OCONV, n->right->left, N); r = nod(OCONV, n->right->left, N);
...@@ -2733,7 +2735,10 @@ stringop(Node *n, int top, NodeList **init) ...@@ -2733,7 +2735,10 @@ stringop(Node *n, int top, NodeList **init)
case OINDEX: case OINDEX:
// sys_indexstring(s, i) // sys_indexstring(s, i)
args = list1(n->left); r = nod(OCONV, n->left, N);
r->type = types[TSTRING];
args = list1(r);
r = nod(OCONV, n->right, N); r = nod(OCONV, n->right, N);
r->type = types[TINT]; r->type = types[TINT];
args = list(args, r); args = list(args, r);
...@@ -2753,9 +2758,10 @@ stringop(Node *n, int top, NodeList **init) ...@@ -2753,9 +2758,10 @@ stringop(Node *n, int top, NodeList **init)
break; break;
case OARRAY: case OARRAY:
r = n->left;
// arraystring([]byte) string; // arraystring([]byte) string;
on = syslook("arraystring", 0); on = syslook("arraystring", 0);
r = n->left;
if(r->type != T && r->type->type != T) { if(r->type != T && r->type->type != T) {
if(istype(r->type->type, TINT) || istype(r->type->type->type, TINT)) { if(istype(r->type->type, TINT) || istype(r->type->type->type, TINT)) {
// arraystring([]byte) string; // arraystring([]byte) string;
...@@ -4081,7 +4087,7 @@ strng: ...@@ -4081,7 +4087,7 @@ strng:
tempname(ohk, types[TINT]); tempname(ohk, types[TINT]);
ha = nod(OXXX, N, N); // hidden string ha = nod(OXXX, N, N); // hidden string
tempname(ha, t); tempname(ha, types[TSTRING]);
hv = N; hv = N;
if(v != N) { if(v != N) {
...@@ -4096,7 +4102,9 @@ strng: ...@@ -4096,7 +4102,9 @@ strng:
} }
// ha = s // ha = s
a = nod(OAS, ha, m); a = nod(OCONV, m, N);
a->type = ha->type;
a = nod(OAS, ha, a);
init = list(init, a); init = list(init, a);
// ohk = 0 // ohk = 0
......
// $G $D/$F.go || echo BUG: bug173
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// these used to fail because the runtime
// functions that get called to implement them
// expected string, not T.
package main
type T string
func main() {
var t T = "hello";
println(t[0:4], t[4]);
for i, x := range t {
}
for i := range t {
}
}
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