mirror of
https://github.com/golang/go
synced 2024-11-19 20:54:39 -07:00
exp/locale/collate: avoid double building in maketables.go. Also added check.
R=r CC=golang-dev https://golang.org/cl/6202063
This commit is contained in:
parent
cb9759d067
commit
c633f85f65
@ -22,6 +22,7 @@ import (
|
||||
// - trie valueBlocks are currently 100K. There are a lot of sparse blocks
|
||||
// and many consecutive values with the same stride. This can be further
|
||||
// compacted.
|
||||
// - compress secondary weights into 8 bits.
|
||||
|
||||
// entry is used to keep track of a single entry in the collation element table
|
||||
// during building. Examples of entries can be found in the Default Unicode
|
||||
@ -69,6 +70,7 @@ type Builder struct {
|
||||
entry []*entry
|
||||
t *table
|
||||
err error
|
||||
built bool
|
||||
}
|
||||
|
||||
// NewBuilder returns a new Builder.
|
||||
@ -178,14 +180,16 @@ func (b *Builder) error(e error) {
|
||||
}
|
||||
|
||||
func (b *Builder) build() (*table, error) {
|
||||
b.t = &table{}
|
||||
|
||||
b.contractCJK()
|
||||
b.simplify() // requires contractCJK
|
||||
b.processExpansions() // requires simplify
|
||||
b.processContractions() // requires simplify
|
||||
b.buildTrie() // requires process*
|
||||
if !b.built {
|
||||
b.built = true
|
||||
b.t = &table{}
|
||||
|
||||
b.contractCJK()
|
||||
b.simplify() // requires contractCJK
|
||||
b.processExpansions() // requires simplify
|
||||
b.processContractions() // requires simplify
|
||||
b.buildTrie() // requires process*
|
||||
}
|
||||
if b.err != nil {
|
||||
return nil, b.err
|
||||
}
|
||||
@ -334,6 +338,9 @@ func convertLargeWeights(elems [][]int) (res [][]int, err error) {
|
||||
if p < firstLargePrimary {
|
||||
continue
|
||||
}
|
||||
if p > 0xFFFF {
|
||||
return elems, fmt.Errorf("found primary weight %X; should be <= 0xFFFF", p)
|
||||
}
|
||||
if p >= illegalPrimary {
|
||||
ce[0] = illegalOffset + p - illegalPrimary
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user