@@ -30,16 +30,31 @@ public final class SKDResponseDictionary {
30
30
return sourcekitd. api. variant_dictionary_get_string ( dict, key) . map ( String . init ( cString: ) )
31
31
}
32
32
public subscript( key: sourcekitd_uid_t ? ) -> Int ? {
33
- return Int ( sourcekitd. api. variant_dictionary_get_int64 ( dict, key) )
33
+ let value = sourcekitd. api. variant_dictionary_get_value ( dict, key)
34
+ if sourcekitd. api. variant_get_type ( value) == SOURCEKITD_VARIANT_TYPE_INT64 {
35
+ return Int ( sourcekitd. api. variant_int64_get_value ( value) )
36
+ } else {
37
+ return nil
38
+ }
34
39
}
35
40
public subscript( key: sourcekitd_uid_t ? ) -> Bool ? {
36
- return sourcekitd. api. variant_dictionary_get_bool ( dict, key)
41
+ let value = sourcekitd. api. variant_dictionary_get_value ( dict, key)
42
+ if sourcekitd. api. variant_get_type ( value) == SOURCEKITD_VARIANT_TYPE_BOOL {
43
+ return sourcekitd. api. variant_bool_get_value ( value)
44
+ } else {
45
+ return nil
46
+ }
37
47
}
38
48
public subscript( key: sourcekitd_uid_t ? ) -> sourcekitd_uid_t ? {
39
49
return sourcekitd. api. variant_dictionary_get_uid ( dict, key)
40
50
}
41
51
public subscript( key: sourcekitd_uid_t ? ) -> SKDResponseArray ? {
42
- return SKDResponseArray ( sourcekitd. api. variant_dictionary_get_value ( dict, key) , response: resp)
52
+ let value = sourcekitd. api. variant_dictionary_get_value ( dict, key)
53
+ if sourcekitd. api. variant_get_type ( value) == SOURCEKITD_VARIANT_TYPE_ARRAY {
54
+ return SKDResponseArray ( value, response: resp)
55
+ } else {
56
+ return nil
57
+ }
43
58
}
44
59
}
45
60
0 commit comments