gen.go: support Unicode 10.0.0 version string

Correct ordering for upcoming
Unicode 10 string.

Change-Id: Id239f02f8c5b7cfa64fa9e9ce649a192350e0b39
Reviewed-on: https://go-review.googlesource.com/63173
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/gen.go b/gen.go
index 79af97e..cccdf0c 100644
--- a/gen.go
+++ b/gen.go
@@ -25,7 +25,9 @@
 	"sync"
 	"unicode"
 
+	"golang.org/x/text/collate"
 	"golang.org/x/text/internal/gen"
+	"golang.org/x/text/language"
 )
 
 var (
@@ -72,11 +74,8 @@
 		fmt.Printf("Requested Unicode version %s; core unicode version is %s.\n",
 			gen.UnicodeVersion(),
 			unicode.Version)
-		// TODO: use collate to compare. Simple comparison will work, though,
-		// until Unicode reaches version 10. To avoid circular dependencies, we
-		// could use the NumericWeighter without using package collate using a
-		// trivial Weighter implementation.
-		if gen.UnicodeVersion() < unicode.Version && !*force {
+		c := collate.New(language.Und, collate.Numeric)
+		if c.CompareString(gen.UnicodeVersion(), unicode.Version) < 0 && !*force {
 			os.Exit(2)
 		}
 		updateCore = true
diff --git a/unicode/rangetable/gen.go b/unicode/rangetable/gen.go
index bea49dd..6a64e42 100644
--- a/unicode/rangetable/gen.go
+++ b/unicode/rangetable/gen.go
@@ -13,12 +13,13 @@
 	"io"
 	"log"
 	"reflect"
-	"sort"
 	"strings"
 	"unicode"
 
+	"golang.org/x/text/collate"
 	"golang.org/x/text/internal/gen"
 	"golang.org/x/text/internal/ucd"
+	"golang.org/x/text/language"
 	"golang.org/x/text/unicode/rangetable"
 )
 
@@ -37,8 +38,9 @@
 		log.Fatal(bootstrapMessage)
 	}
 
+	c := collate.New(language.Und, collate.Numeric)
 	versions := strings.Split(*versionList, ",")
-	sort.Strings(versions)
+	c.SortStrings(versions)
 
 	// Ensure that at least the current version is included.
 	for _, v := range versions {
@@ -48,7 +50,7 @@
 	}
 
 	versions = append(versions, gen.UnicodeVersion())
-	sort.Strings(versions)
+	c.SortStrings(versions)
 	return versions
 }