language: carry over all extensions

Not just the ā€˜uā€™ extension.

Change-Id: Ia8fac679ecec066d1cd7af3f6b91d78010b3146a
Reviewed-on: https://go-review.googlesource.com/55991
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/language/match.go b/language/match.go
index b7779ed..4c4b137 100644
--- a/language/match.go
+++ b/language/match.go
@@ -83,9 +83,8 @@
 	// to do after the fact, so we do it here.
 	// TODO: add in alternative variants to -u-va-.
 	// TODO: add preferred region to -u-rg-.
-	// TODO: add other extensions. Merge with existing extensions.
-	if u, ok := w.Extension('u'); ok {
-		t, _ = Raw.Compose(t, u)
+	if e := w.Extensions(); len(e) > 0 {
+		t, _ = Raw.Compose(t, e)
 	}
 	return t, index, c
 }
diff --git a/language/testdata/GoLocaleMatcherTest.txt b/language/testdata/GoLocaleMatcherTest.txt
index cc42009..4f4c609 100644
--- a/language/testdata/GoLocaleMatcherTest.txt
+++ b/language/testdata/GoLocaleMatcherTest.txt
@@ -9,7 +9,7 @@
 zh-CN, zh-TW, iw ; 	zh ; 	zh-CN
 zh-CN, zh-TW, iw ; 	zh-Hans-CN ; 	zh-CN
 zh-CN, zh-TW, iw ; 	zh-Hant-HK ; 	zh-TW
-zh-CN, zh-TW, iw ; 	he-IT ; 	iw ; iw  # should the surface tag be he?
+zh-CN, zh-TW, iw ; 	he-IT ; 	iw ; iw
 
 # language-specific script fallbacks 1
 en, sr, nl ; 	sr-Latn ; 	sr
@@ -217,9 +217,10 @@
 en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh,  zh-Hant, zh-Hant-HK ; 	pt-ST ; 	pt-PT
 en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh,  zh-Hant, zh-Hant-HK ; 	pt-TL ; 	pt-PT
 
-# preserve Unicode extension
+# preserve extensions
 en, de, sl-nedis ; 	de-FR-u-co-phonebk ; 	de ; de-u-co-phonebk
 en, de, sl-nedis ; 	sl-nedis-u-cu-eur ; 	sl-nedis ; sl-nedis-u-cu-eur
 en, de, sl-nedis ; 	sl-u-cu-eur ; 	sl-nedis ; sl-nedis-u-cu-eur
 en, de, sl-nedis ; 	sl-HR-nedis-u-cu-eur ; 	sl-nedis ; sl-nedis-u-cu-eur
+en, de, sl-nedis ; 	de-t-m0-iso-i0-pinyin ; 	de ; de-t-m0-iso-i0-pinyin