Index: mojom/mojom_parser/mojom/user_defined_types.go |
diff --git a/mojom/mojom_parser/mojom/user_defined_types.go b/mojom/mojom_parser/mojom/user_defined_types.go |
index c0a5c1bf09c62552a09c0953ddc8820c6d1f1cc4..3dd9c5caec73862c537e8331146455457d23dbb4 100644 |
--- a/mojom/mojom_parser/mojom/user_defined_types.go |
+++ b/mojom/mojom_parser/mojom/user_defined_types.go |
@@ -9,6 +9,7 @@ import ( |
"fmt" |
"math" |
"mojom/mojom_parser/lexer" |
+ "sort" |
"strings" |
) |
@@ -145,6 +146,7 @@ func (b *UserDefinedTypeBase) FindReachableTypes() []string { |
} |
i++ |
} |
+ sort.Strings(typeKeys) |
return typeKeys |
} |
@@ -152,6 +154,9 @@ func (b *UserDefinedTypeBase) FindReachableTypes() []string { |
// It performs a depth-first search through the type graph while populating |
// |reachableSet| with the UserDefinedTypes encountered during the search. |
func findReachableTypes(udt UserDefinedType, reachableSet UserDefinedTypeSet) { |
+ if udt == nil { |
+ panic("udt is nil") |
+ } |
if reachableSet.Contains(udt) { |
return |
} |
@@ -186,7 +191,9 @@ func findReachableTypes(udt UserDefinedType, reachableSet UserDefinedTypeSet) { |
// There is an edge in the type graph from this interface type to |
// the type of a request or response parameter. |
findReachableTypes(object.Parameters, reachableSet) |
- findReachableTypes(object.ResponseParameters, reachableSet) |
+ if object.ResponseParameters != nil { |
+ findReachableTypes(object.ResponseParameters, reachableSet) |
+ } |
} |
} |
} |