Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (199218 => 199219)
--- trunk/Source/_javascript_Core/ChangeLog 2016-04-08 07:08:19 UTC (rev 199218)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-04-08 07:13:28 UTC (rev 199219)
@@ -1,3 +1,23 @@
+2016-04-08 Brian Burg <[email protected]>
+
+ Web Inspector: protocol generator should emit an error when 'type' is used instead of '$ref'
+ https://bugs.webkit.org/show_bug.cgi?id=156275
+ <rdar://problem/25569331>
+
+ Reviewed by Darin Adler.
+
+ * inspector/protocol/Heap.json: Fix a mistake that's now caught by the protocol generator.
+
+ * inspector/scripts/codegen/models.py:
+ (TypeReference.__init__): Check here if type_kind is on a whitelist of primitive types.
+ (TypeReference.referenced_name): Update comment.
+
+ Add a new test specifically for the case when the type would otherwise be resolved. Rebaseline.
+
+ * inspector/scripts/tests/expected/fail-on-type-reference-as-primitive-type.json-error: Added.
+ * inspector/scripts/tests/expected/fail-on-unknown-type-reference-in-type-declaration.json-error:
+ * inspector/scripts/tests/fail-on-type-reference-as-primitive-type.json: Added.
+
2016-04-07 Joseph Pecoraro <[email protected]>
Remove ENABLE(ENABLE_ES6_CLASS_SYNTAX) guards
Modified: trunk/Source/_javascript_Core/inspector/protocol/Heap.json (199218 => 199219)
--- trunk/Source/_javascript_Core/inspector/protocol/Heap.json 2016-04-08 07:08:19 UTC (rev 199218)
+++ trunk/Source/_javascript_Core/inspector/protocol/Heap.json 2016-04-08 07:13:28 UTC (rev 199219)
@@ -76,7 +76,7 @@
"name": "garbageCollected",
"description": "Information about the garbage collection.",
"parameters": [
- { "name": "collection", "type": "GarbageCollection" }
+ { "name": "collection", "$ref": "GarbageCollection" }
]
},
{
Modified: trunk/Source/_javascript_Core/inspector/scripts/codegen/models.py (199218 => 199219)
--- trunk/Source/_javascript_Core/inspector/scripts/codegen/models.py 2016-04-08 07:08:19 UTC (rev 199218)
+++ trunk/Source/_javascript_Core/inspector/scripts/codegen/models.py 2016-04-08 07:13:28 UTC (rev 199219)
@@ -119,6 +119,10 @@
if type_kind is not None and referenced_type_name is not None:
raise ParseException("Type reference cannot have both 'type' and '$ref' keys.")
+ all_primitive_types = ["integer", "number", "string", "boolean", "enum", "object", "array", "any"]
+ if type_kind is not None and type_kind not in all_primitive_types:
+ raise ParseException("Type reference '%s' is not a primitive type. Allowed values: %s" % (type_kind, ', '.join(all_primitive_types)))
+
if type_kind == "array" and array_items is None:
raise ParseException("Type reference with type 'array' must have key 'items' to define array element type.")
@@ -129,7 +133,7 @@
if self.referenced_type_name is not None:
return self.referenced_type_name
else:
- return self.type_kind # integer, string, number, boolean, enum, object, array
+ return self.type_kind # one of all_primitive_types
class Type:
Added: trunk/Source/_javascript_Core/inspector/scripts/tests/expected/fail-on-type-reference-as-primitive-type.json-error (0 => 199219)
--- trunk/Source/_javascript_Core/inspector/scripts/tests/expected/fail-on-type-reference-as-primitive-type.json-error (rev 0)
+++ trunk/Source/_javascript_Core/inspector/scripts/tests/expected/fail-on-type-reference-as-primitive-type.json-error 2016-04-08 07:13:28 UTC (rev 199219)
@@ -0,0 +1 @@
+ERROR: Type reference 'DatabaseId' is not a primitive type. Allowed values: integer, number, string, boolean, enum, object, array, any
Modified: trunk/Source/_javascript_Core/inspector/scripts/tests/expected/fail-on-unknown-type-reference-in-type-declaration.json-error (199218 => 199219)
--- trunk/Source/_javascript_Core/inspector/scripts/tests/expected/fail-on-unknown-type-reference-in-type-declaration.json-error 2016-04-08 07:08:19 UTC (rev 199218)
+++ trunk/Source/_javascript_Core/inspector/scripts/tests/expected/fail-on-unknown-type-reference-in-type-declaration.json-error 2016-04-08 07:13:28 UTC (rev 199219)
@@ -1 +1 @@
-ERROR: Lookup failed for type reference: dragon (referenced from domain: Runtime)
+ERROR: Type reference 'dragon' is not a primitive type. Allowed values: integer, number, string, boolean, enum, object, array, any
Added: trunk/Source/_javascript_Core/inspector/scripts/tests/fail-on-type-reference-as-primitive-type.json (0 => 199219)
--- trunk/Source/_javascript_Core/inspector/scripts/tests/fail-on-type-reference-as-primitive-type.json (rev 0)
+++ trunk/Source/_javascript_Core/inspector/scripts/tests/fail-on-type-reference-as-primitive-type.json 2016-04-08 07:13:28 UTC (rev 199219)
@@ -0,0 +1,18 @@
+{
+ "domain": "Database",
+ "types": [
+ {
+ "id": "DatabaseId",
+ "type": "string",
+ "description": "Unique identifier of Database object."
+ }
+ ],
+ "events": [
+ {
+ "name": "didExecuteOptionalParameters",
+ "parameters": [
+ { "name": "columnNames", "type": "DatabaseId" }
+ ]
+ }
+ ]
+}