1
0
mirror of https://github.com/golang/go synced 2024-11-22 00:14:42 -07:00

gc: make string const comparison unsigned

Make compile-time string const comparison match semantics
of runtime.cmpstring.

Fixes #1515.

R=rsc
CC=golang-dev, rog
https://golang.org/cl/4172049
This commit is contained in:
Jeff R. Allen 2011-02-16 17:57:15 -05:00 committed by Russ Cox
parent 0856731daa
commit 3a2d64789b
2 changed files with 23 additions and 3 deletions

View File

@ -1051,12 +1051,12 @@ int
cmpslit(Node *l, Node *r) cmpslit(Node *l, Node *r)
{ {
int32 l1, l2, i, m; int32 l1, l2, i, m;
char *s1, *s2; uchar *s1, *s2;
l1 = l->val.u.sval->len; l1 = l->val.u.sval->len;
l2 = r->val.u.sval->len; l2 = r->val.u.sval->len;
s1 = l->val.u.sval->s; s1 = (uchar*)l->val.u.sval->s;
s2 = r->val.u.sval->s; s2 = (uchar*)r->val.u.sval->s;
m = l1; m = l1;
if(l2 < m) if(l2 < m)

20
test/fixedbugs/bug1515.go Normal file
View File

@ -0,0 +1,20 @@
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2011 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.
package main
const (
joao = "João"
jose = "José"
)
func main() {
s1 := joao
s2 := jose
if (s1 < s2) != (joao < jose) {
panic("unequal")
}
}