<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[168385] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/168385">168385</a></dd>
<dt>Author</dt> <dd>oliver@apple.com</dd>
<dt>Date</dt> <dd>2014-05-06 15:17:04 -0700 (Tue, 06 May 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Can't make a booking at virginamerica.com
https://bugs.webkit.org/show_bug.cgi?id=132626

Reviewed by Geoffrey Garen.

Source/WebCore:
Test: fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html

We can't throw an exception when a site incorrectly attempts
to use a dom property setter directly on the prototype as
there are sites that do this as compatibility workarounds
for old browsers. Instead we treat use of the setter on
the prototype object in the same way we do getters, and just
log a warning to the console.

* bindings/js/JSDOMBinding.cpp:
(WebCore::reportDeprecatedSetterError):
* bindings/js/JSDOMBinding.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::setJSTestInterfaceImplementsStr2):
(WebCore::setJSTestInterfaceImplementsStr3):
(WebCore::setJSTestInterfaceImplementsNode):
(WebCore::setJSTestInterfaceSupplementalStr2):
(WebCore::setJSTestInterfaceSupplementalStr3):
(WebCore::setJSTestInterfaceSupplementalNode):
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::setJSTestNondeterministicNondeterministicWriteableAttr):
(WebCore::setJSTestNondeterministicNondeterministicExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicGetterExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicSetterExceptionAttr):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::setJSTestObjTestSubObjEnabledBySettingConstructor):
(WebCore::setJSTestObjEnumAttr):
(WebCore::setJSTestObjByteAttr):
(WebCore::setJSTestObjOctetAttr):
(WebCore::setJSTestObjShortAttr):
(WebCore::setJSTestObjUnsignedShortAttr):
(WebCore::setJSTestObjLongAttr):
(WebCore::setJSTestObjLongLongAttr):
(WebCore::setJSTestObjUnsignedLongLongAttr):
(WebCore::setJSTestObjStringAttr):
(WebCore::setJSTestObjTestObjAttr):
(WebCore::setJSTestObjXMLObjAttr):
(WebCore::setJSTestObjCreate):
(WebCore::setJSTestObjReflectedStringAttr):
(WebCore::setJSTestObjReflectedIntegralAttr):
(WebCore::setJSTestObjReflectedUnsignedIntegralAttr):
(WebCore::setJSTestObjReflectedBooleanAttr):
(WebCore::setJSTestObjReflectedURLAttr):
(WebCore::setJSTestObjReflectedCustomIntegralAttr):
(WebCore::setJSTestObjReflectedCustomBooleanAttr):
(WebCore::setJSTestObjReflectedCustomURLAttr):
(WebCore::setJSTestObjTypedArrayAttr):
(WebCore::setJSTestObjAttrWithGetterException):
(WebCore::setJSTestObjAttrWithSetterException):
(WebCore::setJSTestObjStringAttrWithGetterException):
(WebCore::setJSTestObjStringAttrWithSetterException):
(WebCore::setJSTestObjCustomAttr):
(WebCore::setJSTestObjWithScriptStateAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttribute):
(WebCore::setJSTestObjWithScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::setJSTestObjWithScriptArgumentsAndCallStackAttribute):
(WebCore::setJSTestObjConditionalAttr1):
(WebCore::setJSTestObjConditionalAttr2):
(WebCore::setJSTestObjConditionalAttr3):
(WebCore::setJSTestObjConditionalAttr4Constructor):
(WebCore::setJSTestObjConditionalAttr5Constructor):
(WebCore::setJSTestObjConditionalAttr6Constructor):
(WebCore::setJSTestObjAnyAttribute):
(WebCore::setJSTestObjMutablePoint):
(WebCore::setJSTestObjImmutablePoint):
(WebCore::setJSTestObjStrawberry):
(WebCore::setJSTestObjStrictFloat):
(WebCore::setJSTestObjId):
(WebCore::setJSTestObjReplaceableAttribute):
(WebCore::setJSTestObjNullableLongSettableAttribute):
(WebCore::setJSTestObjNullableStringValue):
(WebCore::setJSTestObjAttributeWithReservedEnumType):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::setJSTestSerializedScriptValueInterfaceValue):
(WebCore::setJSTestSerializedScriptValueInterfaceCachedValue):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::setJSTestTypedefsUnsignedLongLongAttr):
(WebCore::setJSTestTypedefsImmutableSerializedScriptValue):
(WebCore::setJSTestTypedefsAttrWithGetterException):
(WebCore::setJSTestTypedefsAttrWithSetterException):
(WebCore::setJSTestTypedefsStringAttrWithGetterException):
(WebCore::setJSTestTypedefsStringAttrWithSetterException):

LayoutTests:
Add testcase to make sure that we are silently ignoring usage
of prototype setters and the prototype itself. We dump a warning
to the console as throwing an exception breaks sites that used
to rely on essentially no-op behavior.

* fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent-expected.txt: Added.
* fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingcpp">trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastdomassigntoprototypeaccessoronprototypeshouldbesilentexpectedtxt">trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomassigntoprototypeaccessoronprototypeshouldbesilenthtml">trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/LayoutTests/ChangeLog        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-05-06  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Can't make a booking at virginamerica.com
+        https://bugs.webkit.org/show_bug.cgi?id=132626
+
+        Reviewed by Geoffrey Garen.
+
+        Add testcase to make sure that we are silently ignoring usage
+        of prototype setters and the prototype itself. We dump a warning
+        to the console as throwing an exception breaks sites that used
+        to rely on essentially no-op behavior.
+
+        * fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent-expected.txt: Added.
+        * fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html: Added.
+
</ins><span class="cx"> 2014-05-06  David Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Begin Removal of Old Multi-Column Code.
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomassigntoprototypeaccessoronprototypeshouldbesilentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent-expected.txt (0 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent-expected.txt        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+CONSOLE MESSAGE: Deprecated attempt to set property 'oncopy' on a non-Document object.
+CONSOLE MESSAGE: Deprecated attempt to set property 'selectedStylesheetSet' on a non-Document object.
+CONSOLE MESSAGE: Deprecated attempt to set property 'innerText' on a non-HTMLElement object.
+Makes sure that assigning to a DOM property directly on the prototype produces a silent error.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdomassigntoprototypeaccessoronprototypeshouldbesilenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html (0 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html                                (rev 0)
+++ trunk/LayoutTests/fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+description(&quot;Makes sure that assigning to a DOM property directly on the prototype produces a silent error.&quot;);
+
+Document.prototype.oncopy = &quot;fail&quot;;
+Document.prototype.selectedStylesheetSet = &quot;fail&quot;;
+Document.prototype.dir = &quot;fail&quot;;
+HTMLElement.prototype.innerText = &quot;fail&quot;;
+
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/ChangeLog        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -1,3 +1,99 @@
</span><ins>+2014-05-06  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Can't make a booking at virginamerica.com
+        https://bugs.webkit.org/show_bug.cgi?id=132626
+
+        Reviewed by Geoffrey Garen.
+
+        Test: fast/dom/assign-to-prototype-accessor-on-prototype-should-be-silent.html
+
+        We can't throw an exception when a site incorrectly attempts
+        to use a dom property setter directly on the prototype as
+        there are sites that do this as compatibility workarounds
+        for old browsers. Instead we treat use of the setter on
+        the prototype object in the same way we do getters, and just
+        log a warning to the console.
+
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::reportDeprecatedSetterError):
+        * bindings/js/JSDOMBinding.h:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        (WebCore::setJSTestInterfaceImplementsStr2):
+        (WebCore::setJSTestInterfaceImplementsStr3):
+        (WebCore::setJSTestInterfaceImplementsNode):
+        (WebCore::setJSTestInterfaceSupplementalStr2):
+        (WebCore::setJSTestInterfaceSupplementalStr3):
+        (WebCore::setJSTestInterfaceSupplementalNode):
+        * bindings/scripts/test/JS/JSTestNondeterministic.cpp:
+        (WebCore::setJSTestNondeterministicNondeterministicWriteableAttr):
+        (WebCore::setJSTestNondeterministicNondeterministicExceptionAttr):
+        (WebCore::setJSTestNondeterministicNondeterministicGetterExceptionAttr):
+        (WebCore::setJSTestNondeterministicNondeterministicSetterExceptionAttr):
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::setJSTestObjTestSubObjEnabledBySettingConstructor):
+        (WebCore::setJSTestObjEnumAttr):
+        (WebCore::setJSTestObjByteAttr):
+        (WebCore::setJSTestObjOctetAttr):
+        (WebCore::setJSTestObjShortAttr):
+        (WebCore::setJSTestObjUnsignedShortAttr):
+        (WebCore::setJSTestObjLongAttr):
+        (WebCore::setJSTestObjLongLongAttr):
+        (WebCore::setJSTestObjUnsignedLongLongAttr):
+        (WebCore::setJSTestObjStringAttr):
+        (WebCore::setJSTestObjTestObjAttr):
+        (WebCore::setJSTestObjXMLObjAttr):
+        (WebCore::setJSTestObjCreate):
+        (WebCore::setJSTestObjReflectedStringAttr):
+        (WebCore::setJSTestObjReflectedIntegralAttr):
+        (WebCore::setJSTestObjReflectedUnsignedIntegralAttr):
+        (WebCore::setJSTestObjReflectedBooleanAttr):
+        (WebCore::setJSTestObjReflectedURLAttr):
+        (WebCore::setJSTestObjReflectedCustomIntegralAttr):
+        (WebCore::setJSTestObjReflectedCustomBooleanAttr):
+        (WebCore::setJSTestObjReflectedCustomURLAttr):
+        (WebCore::setJSTestObjTypedArrayAttr):
+        (WebCore::setJSTestObjAttrWithGetterException):
+        (WebCore::setJSTestObjAttrWithSetterException):
+        (WebCore::setJSTestObjStringAttrWithGetterException):
+        (WebCore::setJSTestObjStringAttrWithSetterException):
+        (WebCore::setJSTestObjCustomAttr):
+        (WebCore::setJSTestObjWithScriptStateAttribute):
+        (WebCore::setJSTestObjWithScriptExecutionContextAttribute):
+        (WebCore::setJSTestObjWithScriptStateAttributeRaises):
+        (WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
+        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
+        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
+        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
+        (WebCore::setJSTestObjWithScriptArgumentsAndCallStackAttribute):
+        (WebCore::setJSTestObjConditionalAttr1):
+        (WebCore::setJSTestObjConditionalAttr2):
+        (WebCore::setJSTestObjConditionalAttr3):
+        (WebCore::setJSTestObjConditionalAttr4Constructor):
+        (WebCore::setJSTestObjConditionalAttr5Constructor):
+        (WebCore::setJSTestObjConditionalAttr6Constructor):
+        (WebCore::setJSTestObjAnyAttribute):
+        (WebCore::setJSTestObjMutablePoint):
+        (WebCore::setJSTestObjImmutablePoint):
+        (WebCore::setJSTestObjStrawberry):
+        (WebCore::setJSTestObjStrictFloat):
+        (WebCore::setJSTestObjId):
+        (WebCore::setJSTestObjReplaceableAttribute):
+        (WebCore::setJSTestObjNullableLongSettableAttribute):
+        (WebCore::setJSTestObjNullableStringValue):
+        (WebCore::setJSTestObjAttributeWithReservedEnumType):
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        (WebCore::setJSTestSerializedScriptValueInterfaceValue):
+        (WebCore::setJSTestSerializedScriptValueInterfaceCachedValue):
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+        (WebCore::setJSTestTypedefsUnsignedLongLongAttr):
+        (WebCore::setJSTestTypedefsImmutableSerializedScriptValue):
+        (WebCore::setJSTestTypedefsAttrWithGetterException):
+        (WebCore::setJSTestTypedefsAttrWithSetterException):
+        (WebCore::setJSTestTypedefsStringAttrWithGetterException):
+        (WebCore::setJSTestTypedefsStringAttrWithSetterException):
+
</ins><span class="cx"> 2014-05-06  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         ChildNodesLazySnapshot::m_childNodes needs two heap allocations.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -576,6 +576,12 @@
</span><span class="cx">     context.addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString(&quot;Deprecated attempt to access property '&quot;, attributeName, &quot;' on a non-&quot;, interfaceName, &quot; object.&quot;));
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><ins>+    
+void reportDeprecatedSetterError(JSC::ExecState&amp; state, const char* interfaceName, const char* attributeName)
+{
+    auto&amp; context = *jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject())-&gt;scriptExecutionContext();
+    context.addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString(&quot;Deprecated attempt to set property '&quot;, attributeName, &quot;' on a non-&quot;, interfaceName, &quot; object.&quot;));
+}
</ins><span class="cx"> 
</span><span class="cx"> JSC::EncodedJSValue throwArgumentMustBeEnumError(JSC::ExecState&amp; state, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedValues)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -67,6 +67,7 @@
</span><span class="cx"> DOMWindow&amp; firstDOMWindow(JSC::ExecState*);
</span><span class="cx"> 
</span><span class="cx"> JSC::EncodedJSValue reportDeprecatedGetterError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
</span><ins>+void reportDeprecatedSetterError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
</ins><span class="cx"> 
</span><span class="cx"> void throwArrayElementTypeError(JSC::ExecState&amp;);
</span><span class="cx"> void throwAttributeTypeError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName, const char* expectedType);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -2483,7 +2483,10 @@
</span><span class="cx">                         push(@implContent, &quot;    ${className}* castedThis = &quot; . GetCastingHelperForThisObject($interface) . &quot;(JSValue::decode(thisValue));\n&quot;);
</span><span class="cx">                     }
</span><span class="cx">                     push(@implContent, &quot;    if (UNLIKELY(!castedThis)) {\n&quot;);
</span><del>-                    push(@implContent, &quot;        throwSetterTypeError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
</del><ins>+                    push(@implContent, &quot;        if (jsDynamicCast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue)))\n&quot;);
+                    push(@implContent, &quot;            reportDeprecatedSetterError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
+                    push(@implContent, &quot;        else\n&quot;);
+                    push(@implContent, &quot;            throwSetterTypeError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
</ins><span class="cx">                     push(@implContent, &quot;        return;\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;    }\n&quot;);
</span><span class="cx">                 }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -625,7 +625,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;implementsStr2&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestInterface&quot;, &quot;implementsStr2&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;implementsStr2&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -643,7 +646,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;implementsStr3&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestInterface&quot;, &quot;implementsStr3&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;implementsStr3&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     castedThis-&gt;setImplementsStr3(exec, value);
</span><span class="lines">@@ -657,7 +663,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;implementsNode&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestInterface&quot;, &quot;implementsNode&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;implementsNode&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -687,7 +696,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;supplementalStr2&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestInterface&quot;, &quot;supplementalStr2&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;supplementalStr2&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -705,7 +717,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;supplementalStr3&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestInterface&quot;, &quot;supplementalStr3&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;supplementalStr3&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     castedThis-&gt;setSupplementalStr3(exec, value);
</span><span class="lines">@@ -719,7 +734,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;supplementalNode&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestInterface&quot;, &quot;supplementalNode&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestInterface&quot;, &quot;supplementalNode&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -339,7 +339,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicWriteableAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicWriteableAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicWriteableAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestNondeterministic&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -355,7 +358,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicExceptionAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicExceptionAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicExceptionAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestNondeterministic&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -371,7 +377,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicGetterExceptionAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicGetterExceptionAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicGetterExceptionAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestNondeterministic&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -387,7 +396,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicSetterExceptionAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicSetterExceptionAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestNondeterministic&quot;, &quot;nondeterministicSetterExceptionAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestNondeterministic&amp; impl = castedThis-&gt;impl();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -2026,7 +2026,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;TestSubObjEnabledBySetting&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;TestSubObjEnabledBySetting&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;TestSubObjEnabledBySetting&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     // Shadowing a built-in constructor
</span><span class="lines">@@ -2039,7 +2042,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;enumAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;enumAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;enumAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2057,7 +2063,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;byteAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;byteAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;byteAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2073,7 +2082,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;octetAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;octetAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;octetAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2089,7 +2101,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;shortAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;shortAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;shortAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2105,7 +2120,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;unsignedShortAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;unsignedShortAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;unsignedShortAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2121,7 +2139,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;longAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;longAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;longAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2137,7 +2158,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;longLongAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;longLongAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;longLongAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2153,7 +2177,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;unsignedLongLongAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;unsignedLongLongAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;unsignedLongLongAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2169,7 +2196,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;stringAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;stringAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;stringAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2185,7 +2215,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;testObjAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;testObjAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;testObjAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2201,7 +2234,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;XMLObjAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;XMLObjAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;XMLObjAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2217,7 +2253,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;create&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;create&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;create&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2233,7 +2272,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2249,7 +2291,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedIntegralAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedIntegralAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedIntegralAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2265,7 +2310,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedUnsignedIntegralAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedUnsignedIntegralAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedUnsignedIntegralAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2281,7 +2329,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedBooleanAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedBooleanAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedBooleanAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2297,7 +2348,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedURLAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedURLAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedURLAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2313,7 +2367,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2329,7 +2386,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomIntegralAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomIntegralAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomIntegralAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2345,7 +2405,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomBooleanAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomBooleanAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomBooleanAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2361,7 +2424,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomURLAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomURLAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;reflectedCustomURLAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2377,7 +2443,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;typedArrayAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;typedArrayAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;typedArrayAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2393,7 +2462,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;attrWithGetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;attrWithGetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;attrWithGetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2409,7 +2481,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;attrWithSetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;attrWithSetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;attrWithSetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2427,7 +2502,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;stringAttrWithGetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;stringAttrWithGetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;stringAttrWithGetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2443,7 +2521,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;stringAttrWithSetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;stringAttrWithSetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;stringAttrWithSetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2461,7 +2542,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;customAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;customAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;customAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     castedThis-&gt;setCustomAttr(exec, value);
</span><span class="lines">@@ -2473,7 +2557,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptStateAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptStateAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptStateAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2489,7 +2576,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2508,7 +2598,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptStateAttributeRaises&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptStateAttributeRaises&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptStateAttributeRaises&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2524,7 +2617,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttributeRaises&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttributeRaises&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttributeRaises&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2543,7 +2639,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2562,7 +2661,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttributeRaises&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttributeRaises&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttributeRaises&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2581,7 +2683,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateWithSpacesAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateWithSpacesAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateWithSpacesAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2600,7 +2705,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptArgumentsAndCallStackAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withScriptArgumentsAndCallStackAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withScriptArgumentsAndCallStackAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2617,7 +2725,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr1&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr1&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr1&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2635,7 +2746,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr2&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr2&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr2&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2653,7 +2767,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr3&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr3&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr3&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2671,7 +2788,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr4&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr4&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr4&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     // Shadowing a built-in constructor
</span><span class="lines">@@ -2686,7 +2806,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr5&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr5&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr5&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     // Shadowing a built-in constructor
</span><span class="lines">@@ -2701,7 +2824,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr6&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr6&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;conditionalAttr6&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     // Shadowing a built-in constructor
</span><span class="lines">@@ -2715,7 +2841,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;anyAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;anyAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;anyAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2731,7 +2860,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;mutablePoint&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;mutablePoint&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;mutablePoint&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2747,7 +2879,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;immutablePoint&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;immutablePoint&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;immutablePoint&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2763,7 +2898,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;strawberry&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;strawberry&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;strawberry&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2779,7 +2917,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;strictFloat&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;strictFloat&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;strictFloat&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2795,7 +2936,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;id&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;id&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;id&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2811,7 +2955,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;replaceableAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;replaceableAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;replaceableAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     // Shadowing a built-in object
</span><span class="lines">@@ -2824,7 +2971,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;nullableLongSettableAttribute&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;nullableLongSettableAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;nullableLongSettableAttribute&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2840,7 +2990,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;nullableStringValue&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;nullableStringValue&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;nullableStringValue&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -2856,7 +3009,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;attributeWithReservedEnumType&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;attributeWithReservedEnumType&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;attributeWithReservedEnumType&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -236,7 +236,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestSerializedScriptValueInterface&quot;, &quot;value&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestSerializedScriptValueInterface&quot;, &quot;value&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestSerializedScriptValueInterface&quot;, &quot;value&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestSerializedScriptValueInterface&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -252,7 +255,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestSerializedScriptValueInterface&quot;, &quot;cachedValue&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestSerializedScriptValueInterface&quot;, &quot;cachedValue&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestSerializedScriptValueInterface&quot;, &quot;cachedValue&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestSerializedScriptValueInterface&amp; impl = castedThis-&gt;impl();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (168384 => 168385)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2014-05-06 22:16:22 UTC (rev 168384)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2014-05-06 22:17:04 UTC (rev 168385)
</span><span class="lines">@@ -363,7 +363,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;unsignedLongLongAttr&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestTypedefs&quot;, &quot;unsignedLongLongAttr&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;unsignedLongLongAttr&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -379,7 +382,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;immutableSerializedScriptValue&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestTypedefs&quot;, &quot;immutableSerializedScriptValue&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;immutableSerializedScriptValue&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -395,7 +401,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;attrWithGetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestTypedefs&quot;, &quot;attrWithGetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;attrWithGetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -411,7 +420,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;attrWithSetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestTypedefs&quot;, &quot;attrWithSetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;attrWithSetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -429,7 +441,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;stringAttrWithGetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestTypedefs&quot;, &quot;stringAttrWithGetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;stringAttrWithGetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="lines">@@ -445,7 +460,10 @@
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><del>-        throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;stringAttrWithSetterException&quot;);
</del><ins>+        if (jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestTypedefs&quot;, &quot;stringAttrWithSetterException&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestTypedefs&quot;, &quot;stringAttrWithSetterException&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span></span></pre>
</div>
</div>

</body>
</html>