Browse Source

compiler: support constant indices with a named type

pull/608/head
Ayke van Laethem 5 years ago
committed by Ron Evans
parent
commit
01e58691a1
  1. 2
      compiler/asserts.go
  2. 7
      testdata/slice.go

2
compiler/asserts.go

@ -22,7 +22,7 @@ func (c *Compiler) emitLookupBoundsCheck(frame *Frame, arrayLen, index llvm.Valu
if index.Type().IntTypeWidth() < arrayLen.Type().IntTypeWidth() {
// Sometimes, the index can be e.g. an uint8 or int8, and we have to
// correctly extend that type.
if indexType.(*types.Basic).Info()&types.IsUnsigned == 0 {
if indexType.Underlying().(*types.Basic).Info()&types.IsUnsigned == 0 {
index = c.builder.CreateZExt(index, arrayLen.Type(), "")
} else {
index = c.builder.CreateSExt(index, arrayLen.Type(), "")

7
testdata/slice.go

@ -2,6 +2,13 @@ package main
type MySlice [32]byte
type myUint8 uint8
// Indexing into slice with named type (regression test).
var array = [4]int{
myUint8(2): 3,
}
func main() {
l := 5
foo := []int{1, 2, 4, 5}

Loading…
Cancel
Save