language: remove manual hr -> sr mapping

was removed in CLDR for geo-political reasons

Change-Id: I318ae1fa55a7012342a0709a7f3114d6e39bae6e
Reviewed-on: https://go-review.googlesource.com/55331
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/language/data_test.go b/language/data_test.go
index a1203f2..dbbf94a 100644
--- a/language/data_test.go
+++ b/language/data_test.go
@@ -55,6 +55,13 @@
 		},
 	},
 	{
+		"don't match hr to sr-Latn",
+		"en, sr-Latn",
+		[]struct{ match, desired string }{
+			{"en", "hr"},
+		},
+	},
+	{
 		"both deprecated and not",
 		"fil, tl, iw, he",
 		[]struct{ match, desired string }{
diff --git a/language/examples_test.go b/language/examples_test.go
index 05e712d..e20c225 100644
--- a/language/examples_test.go
+++ b/language/examples_test.go
@@ -274,7 +274,7 @@
 
 	fmt.Println("----")
 
-	// Croatian speakers will likely understand Serbian written in Latin script.
+	// Someone specifying sr-Latn is probably fine with getting Croatian.
 	fmt.Println(m.Match(language.Make("sr-Latn")))
 
 	// We match SimplifiedChinese, but with Low confidence.
diff --git a/language/gen.go b/language/gen.go
index 153269b..435044b 100644
--- a/language/gen.go
+++ b/language/gen.go
@@ -1421,16 +1421,7 @@
 	b.writeType(scriptIntelligibility{})
 	b.writeType(regionIntelligibility{})
 
-	matchLang := []mutualIntelligibility{{
-		// TODO: remove once CLDR is fixed.
-		want:     uint16(b.langIndex("sr")),
-		have:     uint16(b.langIndex("hr")),
-		distance: uint8(5),
-	}, {
-		want:     uint16(b.langIndex("sr")),
-		have:     uint16(b.langIndex("bs")),
-		distance: uint8(5),
-	}}
+	matchLang := []mutualIntelligibility{}
 	matchScript := []scriptIntelligibility{}
 	matchRegion := []regionIntelligibility{}
 	// Convert the languageMatch entries in lists keyed by desired language.
diff --git a/language/match.go b/language/match.go
index 63bc744..16128a4 100644
--- a/language/match.go
+++ b/language/match.go
@@ -602,10 +602,6 @@
 	// (their canonicalization simply substitutes a different language code, but
 	// nothing else), the match confidence is Exact, otherwise it is High.
 	for i, lm := range langAliasMap {
-		if lm.from == _sh {
-			continue
-		}
-
 		// If deprecated codes match and there is no fiddling with the script or
 		// or region, we consider it an exact match.
 		conf := Exact
diff --git a/language/tables.go b/language/tables.go
index a108554..7f8b042 100644
--- a/language/tables.go
+++ b/language/tables.go
@@ -3349,8 +3349,8 @@
 // matchLang holds pairs of langIDs of base languages that are typically
 // mutually intelligible. Each pair is associated with a confidence and
 // whether the intelligibility goes one or both ways.
-// Size: 690 bytes, 115 elements
-var matchLang = [115]mutualIntelligibility{
+// Size: 678 bytes, 113 elements
+var matchLang = [113]mutualIntelligibility{
 	0:   {want: 0x1cf, have: 0xb7, distance: 0x4, oneway: false},
 	1:   {want: 0x405, have: 0xb7, distance: 0x4, oneway: false},
 	2:   {want: 0x405, have: 0x1cf, distance: 0x4, oneway: false},
@@ -3358,114 +3358,112 @@
 	4:   {want: 0x438, have: 0x1, distance: 0x4, oneway: false},
 	5:   {want: 0x1a1, have: 0x10c, distance: 0x4, oneway: true},
 	6:   {want: 0x293, have: 0x10c, distance: 0x4, oneway: true},
-	7:   {want: 0x430, have: 0x1cf, distance: 0x5, oneway: false},
-	8:   {want: 0x430, have: 0xb7, distance: 0x5, oneway: false},
-	9:   {want: 0x100, have: 0x36d, distance: 0x8, oneway: false},
-	10:  {want: 0x100, have: 0x345, distance: 0x8, oneway: false},
-	11:  {want: 0x5, have: 0x3e0, distance: 0xa, oneway: true},
-	12:  {want: 0xd, have: 0x138, distance: 0xa, oneway: true},
-	13:  {want: 0x16, have: 0x365, distance: 0xa, oneway: true},
-	14:  {want: 0x21, have: 0x138, distance: 0xa, oneway: true},
-	15:  {want: 0x56, have: 0x13d, distance: 0xa, oneway: true},
-	16:  {want: 0x58, have: 0x3e0, distance: 0xa, oneway: true},
-	17:  {want: 0x71, have: 0x3e0, distance: 0xa, oneway: true},
-	18:  {want: 0x75, have: 0x138, distance: 0xa, oneway: true},
-	19:  {want: 0x82, have: 0x1bc, distance: 0xa, oneway: true},
-	20:  {want: 0xa5, have: 0x138, distance: 0xa, oneway: true},
-	21:  {want: 0xb2, have: 0x15d, distance: 0xa, oneway: true},
-	22:  {want: 0xdd, have: 0x152, distance: 0xa, oneway: true},
-	23:  {want: 0xe5, have: 0x138, distance: 0xa, oneway: true},
-	24:  {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true},
-	25:  {want: 0xef, have: 0x15d, distance: 0xa, oneway: true},
-	26:  {want: 0xf8, have: 0x15d, distance: 0xa, oneway: true},
-	27:  {want: 0xff, have: 0x138, distance: 0xa, oneway: true},
-	28:  {want: 0x12f, have: 0x138, distance: 0xa, oneway: true},
-	29:  {want: 0x13b, have: 0x138, distance: 0xa, oneway: true},
-	30:  {want: 0x13f, have: 0x150, distance: 0xa, oneway: true},
-	31:  {want: 0x144, have: 0x13d, distance: 0xa, oneway: true},
-	32:  {want: 0x157, have: 0x100, distance: 0xa, oneway: true},
-	33:  {want: 0x16c, have: 0x365, distance: 0xa, oneway: true},
-	34:  {want: 0x16d, have: 0x138, distance: 0xa, oneway: true},
-	35:  {want: 0x16e, have: 0x138, distance: 0xa, oneway: true},
-	36:  {want: 0x17c, have: 0x138, distance: 0xa, oneway: true},
-	37:  {want: 0x18e, have: 0x13d, distance: 0xa, oneway: true},
-	38:  {want: 0x192, have: 0x13d, distance: 0xa, oneway: true},
-	39:  {want: 0x1a2, have: 0x1bc, distance: 0xa, oneway: true},
-	40:  {want: 0x1b2, have: 0x138, distance: 0xa, oneway: true},
-	41:  {want: 0x1b6, have: 0x138, distance: 0xa, oneway: true},
-	42:  {want: 0x1d2, have: 0x15d, distance: 0xa, oneway: true},
-	43:  {want: 0x1d5, have: 0x3e0, distance: 0xa, oneway: true},
-	44:  {want: 0x1d7, have: 0x138, distance: 0xa, oneway: true},
-	45:  {want: 0x1e5, have: 0x138, distance: 0xa, oneway: true},
-	46:  {want: 0x1f6, have: 0x138, distance: 0xa, oneway: true},
-	47:  {want: 0x20c, have: 0x1df, distance: 0xa, oneway: true},
-	48:  {want: 0x20e, have: 0x138, distance: 0xa, oneway: true},
-	49:  {want: 0x22b, have: 0x15d, distance: 0xa, oneway: true},
-	50:  {want: 0x240, have: 0x3e0, distance: 0xa, oneway: true},
-	51:  {want: 0x248, have: 0x138, distance: 0xa, oneway: true},
-	52:  {want: 0x24f, have: 0x138, distance: 0xa, oneway: true},
-	53:  {want: 0x263, have: 0x138, distance: 0xa, oneway: true},
-	54:  {want: 0x272, have: 0x488, distance: 0xa, oneway: true},
-	55:  {want: 0x288, have: 0x3e0, distance: 0xa, oneway: true},
-	56:  {want: 0x28c, have: 0x1f7, distance: 0xa, oneway: true},
-	57:  {want: 0x2a1, have: 0x138, distance: 0xa, oneway: true},
-	58:  {want: 0x2b3, have: 0x15d, distance: 0xa, oneway: true},
-	59:  {want: 0x2b6, have: 0x138, distance: 0xa, oneway: true},
-	60:  {want: 0x2bc, have: 0x138, distance: 0xa, oneway: true},
-	61:  {want: 0x2c1, have: 0x15d, distance: 0xa, oneway: true},
-	62:  {want: 0x2eb, have: 0x138, distance: 0xa, oneway: true},
-	63:  {want: 0x2ef, have: 0x15d, distance: 0xa, oneway: true},
-	64:  {want: 0x2f8, have: 0x138, distance: 0xa, oneway: true},
-	65:  {want: 0x2fd, have: 0x7e, distance: 0xa, oneway: true},
-	66:  {want: 0x302, have: 0x138, distance: 0xa, oneway: true},
-	67:  {want: 0x309, have: 0x3e0, distance: 0xa, oneway: true},
-	68:  {want: 0x319, have: 0x1bc, distance: 0xa, oneway: true},
-	69:  {want: 0x31d, have: 0x1df, distance: 0xa, oneway: true},
-	70:  {want: 0x31e, have: 0x138, distance: 0xa, oneway: true},
-	71:  {want: 0x32f, have: 0x138, distance: 0xa, oneway: true},
-	72:  {want: 0x34f, have: 0x138, distance: 0xa, oneway: true},
-	73:  {want: 0x368, have: 0x345, distance: 0xa, oneway: false},
-	74:  {want: 0x368, have: 0x36d, distance: 0xa, oneway: true},
-	75:  {want: 0x378, have: 0x138, distance: 0xa, oneway: true},
-	76:  {want: 0x385, have: 0x138, distance: 0xa, oneway: true},
-	77:  {want: 0x387, have: 0x138, distance: 0xa, oneway: true},
-	78:  {want: 0x389, have: 0x15d, distance: 0xa, oneway: true},
-	79:  {want: 0x38e, have: 0x138, distance: 0xa, oneway: true},
-	80:  {want: 0x393, have: 0x138, distance: 0xa, oneway: true},
-	81:  {want: 0x39b, have: 0x138, distance: 0xa, oneway: true},
-	82:  {want: 0x3a3, have: 0x138, distance: 0xa, oneway: true},
-	83:  {want: 0x3bc, have: 0x138, distance: 0xa, oneway: true},
-	84:  {want: 0x3c2, have: 0x13d, distance: 0xa, oneway: true},
-	85:  {want: 0x3d2, have: 0x10c, distance: 0xa, oneway: true},
-	86:  {want: 0x3d7, have: 0x138, distance: 0xa, oneway: true},
-	87:  {want: 0x3e3, have: 0x15d, distance: 0xa, oneway: true},
-	88:  {want: 0x3e7, have: 0x1bc, distance: 0xa, oneway: true},
-	89:  {want: 0x3f8, have: 0x138, distance: 0xa, oneway: true},
-	90:  {want: 0x40a, have: 0x138, distance: 0xa, oneway: true},
-	91:  {want: 0x421, have: 0x138, distance: 0xa, oneway: true},
-	92:  {want: 0x427, have: 0x138, distance: 0xa, oneway: true},
-	93:  {want: 0x42f, have: 0x138, distance: 0xa, oneway: true},
-	94:  {want: 0x439, have: 0x138, distance: 0xa, oneway: true},
-	95:  {want: 0x43c, have: 0x1df, distance: 0xa, oneway: true},
-	96:  {want: 0x443, have: 0x138, distance: 0xa, oneway: true},
-	97:  {want: 0x44e, have: 0x138, distance: 0xa, oneway: true},
-	98:  {want: 0x45f, have: 0x138, distance: 0xa, oneway: true},
-	99:  {want: 0x465, have: 0x3e0, distance: 0xa, oneway: true},
-	100: {want: 0x46d, have: 0x138, distance: 0xa, oneway: true},
-	101: {want: 0x474, have: 0x3e0, distance: 0xa, oneway: true},
-	102: {want: 0x3880, have: 0x138, distance: 0xa, oneway: true},
-	103: {want: 0x47e, have: 0x138, distance: 0xa, oneway: true},
-	104: {want: 0x480, have: 0x138, distance: 0xa, oneway: true},
-	105: {want: 0x492, have: 0x3e0, distance: 0xa, oneway: true},
-	106: {want: 0x49b, have: 0x138, distance: 0xa, oneway: true},
-	107: {want: 0x4aa, have: 0x527, distance: 0xa, oneway: true},
-	108: {want: 0x4b2, have: 0x138, distance: 0xa, oneway: true},
-	109: {want: 0x4ba, have: 0x3e0, distance: 0xa, oneway: true},
-	110: {want: 0x4e3, have: 0x15d, distance: 0xa, oneway: true},
-	111: {want: 0x4f0, have: 0x138, distance: 0xa, oneway: true},
-	112: {want: 0x510, have: 0x138, distance: 0xa, oneway: true},
-	113: {want: 0x516, have: 0x138, distance: 0xa, oneway: true},
-	114: {want: 0x52c, have: 0x138, distance: 0xa, oneway: true},
+	7:   {want: 0x100, have: 0x36d, distance: 0x8, oneway: false},
+	8:   {want: 0x100, have: 0x345, distance: 0x8, oneway: false},
+	9:   {want: 0x5, have: 0x3e0, distance: 0xa, oneway: true},
+	10:  {want: 0xd, have: 0x138, distance: 0xa, oneway: true},
+	11:  {want: 0x16, have: 0x365, distance: 0xa, oneway: true},
+	12:  {want: 0x21, have: 0x138, distance: 0xa, oneway: true},
+	13:  {want: 0x56, have: 0x13d, distance: 0xa, oneway: true},
+	14:  {want: 0x58, have: 0x3e0, distance: 0xa, oneway: true},
+	15:  {want: 0x71, have: 0x3e0, distance: 0xa, oneway: true},
+	16:  {want: 0x75, have: 0x138, distance: 0xa, oneway: true},
+	17:  {want: 0x82, have: 0x1bc, distance: 0xa, oneway: true},
+	18:  {want: 0xa5, have: 0x138, distance: 0xa, oneway: true},
+	19:  {want: 0xb2, have: 0x15d, distance: 0xa, oneway: true},
+	20:  {want: 0xdd, have: 0x152, distance: 0xa, oneway: true},
+	21:  {want: 0xe5, have: 0x138, distance: 0xa, oneway: true},
+	22:  {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true},
+	23:  {want: 0xef, have: 0x15d, distance: 0xa, oneway: true},
+	24:  {want: 0xf8, have: 0x15d, distance: 0xa, oneway: true},
+	25:  {want: 0xff, have: 0x138, distance: 0xa, oneway: true},
+	26:  {want: 0x12f, have: 0x138, distance: 0xa, oneway: true},
+	27:  {want: 0x13b, have: 0x138, distance: 0xa, oneway: true},
+	28:  {want: 0x13f, have: 0x150, distance: 0xa, oneway: true},
+	29:  {want: 0x144, have: 0x13d, distance: 0xa, oneway: true},
+	30:  {want: 0x157, have: 0x100, distance: 0xa, oneway: true},
+	31:  {want: 0x16c, have: 0x365, distance: 0xa, oneway: true},
+	32:  {want: 0x16d, have: 0x138, distance: 0xa, oneway: true},
+	33:  {want: 0x16e, have: 0x138, distance: 0xa, oneway: true},
+	34:  {want: 0x17c, have: 0x138, distance: 0xa, oneway: true},
+	35:  {want: 0x18e, have: 0x13d, distance: 0xa, oneway: true},
+	36:  {want: 0x192, have: 0x13d, distance: 0xa, oneway: true},
+	37:  {want: 0x1a2, have: 0x1bc, distance: 0xa, oneway: true},
+	38:  {want: 0x1b2, have: 0x138, distance: 0xa, oneway: true},
+	39:  {want: 0x1b6, have: 0x138, distance: 0xa, oneway: true},
+	40:  {want: 0x1d2, have: 0x15d, distance: 0xa, oneway: true},
+	41:  {want: 0x1d5, have: 0x3e0, distance: 0xa, oneway: true},
+	42:  {want: 0x1d7, have: 0x138, distance: 0xa, oneway: true},
+	43:  {want: 0x1e5, have: 0x138, distance: 0xa, oneway: true},
+	44:  {want: 0x1f6, have: 0x138, distance: 0xa, oneway: true},
+	45:  {want: 0x20c, have: 0x1df, distance: 0xa, oneway: true},
+	46:  {want: 0x20e, have: 0x138, distance: 0xa, oneway: true},
+	47:  {want: 0x22b, have: 0x15d, distance: 0xa, oneway: true},
+	48:  {want: 0x240, have: 0x3e0, distance: 0xa, oneway: true},
+	49:  {want: 0x248, have: 0x138, distance: 0xa, oneway: true},
+	50:  {want: 0x24f, have: 0x138, distance: 0xa, oneway: true},
+	51:  {want: 0x263, have: 0x138, distance: 0xa, oneway: true},
+	52:  {want: 0x272, have: 0x488, distance: 0xa, oneway: true},
+	53:  {want: 0x288, have: 0x3e0, distance: 0xa, oneway: true},
+	54:  {want: 0x28c, have: 0x1f7, distance: 0xa, oneway: true},
+	55:  {want: 0x2a1, have: 0x138, distance: 0xa, oneway: true},
+	56:  {want: 0x2b3, have: 0x15d, distance: 0xa, oneway: true},
+	57:  {want: 0x2b6, have: 0x138, distance: 0xa, oneway: true},
+	58:  {want: 0x2bc, have: 0x138, distance: 0xa, oneway: true},
+	59:  {want: 0x2c1, have: 0x15d, distance: 0xa, oneway: true},
+	60:  {want: 0x2eb, have: 0x138, distance: 0xa, oneway: true},
+	61:  {want: 0x2ef, have: 0x15d, distance: 0xa, oneway: true},
+	62:  {want: 0x2f8, have: 0x138, distance: 0xa, oneway: true},
+	63:  {want: 0x2fd, have: 0x7e, distance: 0xa, oneway: true},
+	64:  {want: 0x302, have: 0x138, distance: 0xa, oneway: true},
+	65:  {want: 0x309, have: 0x3e0, distance: 0xa, oneway: true},
+	66:  {want: 0x319, have: 0x1bc, distance: 0xa, oneway: true},
+	67:  {want: 0x31d, have: 0x1df, distance: 0xa, oneway: true},
+	68:  {want: 0x31e, have: 0x138, distance: 0xa, oneway: true},
+	69:  {want: 0x32f, have: 0x138, distance: 0xa, oneway: true},
+	70:  {want: 0x34f, have: 0x138, distance: 0xa, oneway: true},
+	71:  {want: 0x368, have: 0x345, distance: 0xa, oneway: false},
+	72:  {want: 0x368, have: 0x36d, distance: 0xa, oneway: true},
+	73:  {want: 0x378, have: 0x138, distance: 0xa, oneway: true},
+	74:  {want: 0x385, have: 0x138, distance: 0xa, oneway: true},
+	75:  {want: 0x387, have: 0x138, distance: 0xa, oneway: true},
+	76:  {want: 0x389, have: 0x15d, distance: 0xa, oneway: true},
+	77:  {want: 0x38e, have: 0x138, distance: 0xa, oneway: true},
+	78:  {want: 0x393, have: 0x138, distance: 0xa, oneway: true},
+	79:  {want: 0x39b, have: 0x138, distance: 0xa, oneway: true},
+	80:  {want: 0x3a3, have: 0x138, distance: 0xa, oneway: true},
+	81:  {want: 0x3bc, have: 0x138, distance: 0xa, oneway: true},
+	82:  {want: 0x3c2, have: 0x13d, distance: 0xa, oneway: true},
+	83:  {want: 0x3d2, have: 0x10c, distance: 0xa, oneway: true},
+	84:  {want: 0x3d7, have: 0x138, distance: 0xa, oneway: true},
+	85:  {want: 0x3e3, have: 0x15d, distance: 0xa, oneway: true},
+	86:  {want: 0x3e7, have: 0x1bc, distance: 0xa, oneway: true},
+	87:  {want: 0x3f8, have: 0x138, distance: 0xa, oneway: true},
+	88:  {want: 0x40a, have: 0x138, distance: 0xa, oneway: true},
+	89:  {want: 0x421, have: 0x138, distance: 0xa, oneway: true},
+	90:  {want: 0x427, have: 0x138, distance: 0xa, oneway: true},
+	91:  {want: 0x42f, have: 0x138, distance: 0xa, oneway: true},
+	92:  {want: 0x439, have: 0x138, distance: 0xa, oneway: true},
+	93:  {want: 0x43c, have: 0x1df, distance: 0xa, oneway: true},
+	94:  {want: 0x443, have: 0x138, distance: 0xa, oneway: true},
+	95:  {want: 0x44e, have: 0x138, distance: 0xa, oneway: true},
+	96:  {want: 0x45f, have: 0x138, distance: 0xa, oneway: true},
+	97:  {want: 0x465, have: 0x3e0, distance: 0xa, oneway: true},
+	98:  {want: 0x46d, have: 0x138, distance: 0xa, oneway: true},
+	99:  {want: 0x474, have: 0x3e0, distance: 0xa, oneway: true},
+	100: {want: 0x3880, have: 0x138, distance: 0xa, oneway: true},
+	101: {want: 0x47e, have: 0x138, distance: 0xa, oneway: true},
+	102: {want: 0x480, have: 0x138, distance: 0xa, oneway: true},
+	103: {want: 0x492, have: 0x3e0, distance: 0xa, oneway: true},
+	104: {want: 0x49b, have: 0x138, distance: 0xa, oneway: true},
+	105: {want: 0x4aa, have: 0x527, distance: 0xa, oneway: true},
+	106: {want: 0x4b2, have: 0x138, distance: 0xa, oneway: true},
+	107: {want: 0x4ba, have: 0x3e0, distance: 0xa, oneway: true},
+	108: {want: 0x4e3, have: 0x15d, distance: 0xa, oneway: true},
+	109: {want: 0x4f0, have: 0x138, distance: 0xa, oneway: true},
+	110: {want: 0x510, have: 0x138, distance: 0xa, oneway: true},
+	111: {want: 0x516, have: 0x138, distance: 0xa, oneway: true},
+	112: {want: 0x52c, have: 0x138, distance: 0xa, oneway: true},
 }
 
 // matchScript holds pairs of scriptIDs where readers of one script
@@ -3651,4 +3649,4 @@
 	4: {lang: 0x527, script: 0x35, maxScript: 0x35, toRegion: 0x8c, fromRegion: []uint16{0xc5}},
 }
 
-// Total table size 26496 bytes (25KiB); checksum: 6E24B15A
+// Total table size 26484 bytes (25KiB); checksum: 566AD466