Title: [199219] trunk/Source/_javascript_Core
Revision
199219
Author
[email protected]
Date
2016-04-08 00:13:28 -0700 (Fri, 08 Apr 2016)

Log Message

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.

Modified Paths

Added Paths

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" }
+            ]
+        }
+    ]
+}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to