go-dirty.git

commit ca8aa4506ae0aa77d63a227084b77f4e56b09a8a

Author: Adam <git@apiote.xyz>

map of bool

 main_test.go | 9 +++++++++
 struct.go | 8 ++++----


diff --git a/main_test.go b/main_test.go
index d4ac92e350dc73b04cf656b72951785023188cea..08259027601cfa22eefb894ed13a624ba4bc4bc4 100644
--- a/main_test.go
+++ b/main_test.go
@@ -470,6 +470,15 @@ 	m := map[uint64]int{}
 	LoadStruct(r, &m)
 }
 
+func TestShowLoadMapBool(t *testing.T) {
+	r := strings.NewReader(`(
+		(true 11)
+		(false 42)
+	)`)
+	m := map[bool]int{}
+	LoadStruct(r, &m)
+}
+
 func TestShowLoadArray(t *testing.T) {
 	r := strings.NewReader(`(11 22 31)`)
 	s := [3]int64{}




diff --git a/struct.go b/struct.go
index 49bfdbc040f819f77705f60f6865828dc81cd18d..09dc82631edc6cdabf6be1e6775a9f4d4c7c9152 100644
--- a/struct.go
+++ b/struct.go
@@ -30,13 +30,13 @@ 	return fieldName
 }
 
 func getStructMapKey(pair Array, mk reflect.Kind) reflect.Value {
-	sk := reflect.ValueOf(pair[0]).Kind()
-	if (sk == reflect.String && mk != reflect.String) ||
-		(sk == reflect.Int && mk != reflect.Int && mk != reflect.Int8 &&
+	sk := reflect.ValueOf(pair[0]).Type().String()
+	if (sk == "dirty.String" && mk != reflect.String) ||
+		(sk == "dirty.Int" && mk != reflect.Int && mk != reflect.Int8 &&
 			mk != reflect.Int16 && mk != reflect.Int32 && mk != reflect.Int64 &&
 			mk != reflect.Uint && mk != reflect.Uint8 &&
 			mk != reflect.Uint16 && mk != reflect.Uint32 && mk != reflect.Uint64) ||
-			(sk == reflect.Bool && mk != reflect.Bool) {
+		(sk == "dirty.Const" && mk != reflect.Bool) /*test sk ==dirty.Const but not dirty::Bool */ {
 		// todo error
 		fmt.Printf("pair[0] (%v) not map key (%v)\n", sk, mk)
 		return reflect.ValueOf(nil)