<!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>[182336] trunk/Source/JavaScriptCore</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/182336">182336</a></dd>
<dt>Author</dt> <dd>ggaren@apple.com</dd>
<dt>Date</dt> <dd>2015-04-03 15:18:05 -0700 (Fri, 03 Apr 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>is* API methods should be @properties
https://bugs.webkit.org/show_bug.cgi?id=143388
Reviewed by Mark Lam.
This appears to be the preferred idiom in WebKit, CA, AppKit, and
Foundation.
* API/JSValue.h: Be @properties.
* API/tests/testapi.mm:
(testObjectiveCAPI): Use the @properties.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSValueh">trunk/Source/JavaScriptCore/API/JSValue.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIteststestapimm">trunk/Source/JavaScriptCore/API/tests/testapi.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSValue.h (182335 => 182336)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSValue.h        2015-04-03 21:44:41 UTC (rev 182335)
+++ trunk/Source/JavaScriptCore/API/JSValue.h        2015-04-03 22:18:05 UTC (rev 182336)
</span><span class="lines">@@ -380,19 +380,19 @@
</span><span class="cx"> @method
</span><span class="cx"> @abstract Check if a JSValue corresponds to the JavaScript value <code>undefined</code>.
</span><span class="cx"> */
</span><del>-- (BOOL)isUndefined;
</del><ins>+@property (readonly) BOOL isUndefined;
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="cx"> @abstract Check if a JSValue corresponds to the JavaScript value <code>null</code>.
</span><span class="cx"> */
</span><del>-- (BOOL)isNull;
</del><ins>+@property (readonly) BOOL isNull;
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="cx"> @abstract Check if a JSValue is a boolean.
</span><span class="cx"> */
</span><del>-- (BOOL)isBoolean;
</del><ins>+@property (readonly) BOOL isBoolean;
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="lines">@@ -401,31 +401,31 @@
</span><span class="cx"> Semantically all numbers behave like doubles except in special cases like bit
</span><span class="cx"> operations.
</span><span class="cx"> */
</span><del>-- (BOOL)isNumber;
</del><ins>+@property (readonly) BOOL isNumber;
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="cx"> @abstract Check if a JSValue is a string.
</span><span class="cx"> */
</span><del>-- (BOOL)isString;
</del><ins>+@property (readonly) BOOL isString;
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="cx"> @abstract Check if a JSValue is an object.
</span><span class="cx"> */
</span><del>-- (BOOL)isObject;
</del><ins>+@property (readonly) BOOL isObject;
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="cx"> @abstract Check if a JSValue is an array.
</span><span class="cx"> */
</span><del>-- (BOOL)isArray NS_AVAILABLE(10_11, 9_0);
</del><ins>+@property (readonly) BOOL isArray NS_AVAILABLE(10_11, 9_0);
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span><span class="cx"> @abstract Check if a JSValue is a date.
</span><span class="cx"> */
</span><del>-- (BOOL)isDate NS_AVAILABLE(10_11, 9_0);
</del><ins>+@property (readonly) BOOL isDate NS_AVAILABLE(10_11, 9_0);
</ins><span class="cx">
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIteststestapimm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/tests/testapi.mm (182335 => 182336)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/tests/testapi.mm        2015-04-03 21:44:41 UTC (rev 182335)
+++ trunk/Source/JavaScriptCore/API/tests/testapi.mm        2015-04-03 22:18:05 UTC (rev 182336)
</span><span class="lines">@@ -496,7 +496,7 @@
</span><span class="cx"> @autoreleasepool {
</span><span class="cx"> JSContext *context = [[JSContext alloc] init];
</span><span class="cx"> JSValue *result = [context evaluateScript:@"2 + 2"];
</span><del>- checkResult(@"2 + 2", [result isNumber] && [result toInt32] == 4);
</del><ins>+ checkResult(@"2 + 2", result.isNumber && [result toInt32] == 4);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -509,20 +509,20 @@
</span><span class="cx"> JSContext *context = [[JSContext alloc] init];
</span><span class="cx"> context[@"message"] = @"Hello";
</span><span class="cx"> JSValue *result = [context evaluateScript:@"message + ', World!'"];
</span><del>- checkResult(@"Hello, World!", [result isString] && [result isEqualToObject:@"Hello, World!"]);
</del><ins>+ checkResult(@"Hello, World!", result.isString && [result isEqualToObject:@"Hello, World!"]);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="cx"> JSContext *context = [[JSContext alloc] init];
</span><span class="cx"> checkResult(@"Promise is not exposed", [context[@"Promise"] isUndefined]);
</span><span class="cx"> JSValue *result = [context evaluateScript:@"typeof Promise"];
</span><del>- checkResult(@"typeof Promise is 'undefined'", [result isString] && [result isEqualToObject:@"undefined"]);
</del><ins>+ checkResult(@"typeof Promise is 'undefined'", result.isString && [result isEqualToObject:@"undefined"]);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="cx"> JSContext *context = [[JSContext alloc] init];
</span><span class="cx"> JSValue *result = [context evaluateScript:@"({ x:42 })"];
</span><del>- checkResult(@"({ x:42 })", [result isObject] && [result[@"x"] isEqualToObject:@42]);
</del><ins>+ checkResult(@"({ x:42 })", result.isObject && [result[@"x"] isEqualToObject:@42]);
</ins><span class="cx"> id obj = [result toObject];
</span><span class="cx"> checkResult(@"Check dictionary literal", [obj isKindOfClass:[NSDictionary class]]);
</span><span class="cx"> id num = (NSDictionary *)obj[@"x"];
</span><span class="lines">@@ -532,13 +532,13 @@
</span><span class="cx"> @autoreleasepool {
</span><span class="cx"> JSContext *context = [[JSContext alloc] init];
</span><span class="cx"> JSValue *result = [context evaluateScript:@"[ ]"];
</span><del>- checkResult(@"[ ]", [result isArray]);
</del><ins>+ checkResult(@"[ ]", result.isArray);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="cx"> JSContext *context = [[JSContext alloc] init];
</span><span class="cx"> JSValue *result = [context evaluateScript:@"new Date"];
</span><del>- checkResult(@"new Date", [result isDate]);
</del><ins>+ checkResult(@"new Date", result.isDate);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -562,11 +562,11 @@
</span><span class="cx"> JSValue *myNumber = [myPrivateProperties valueForKey:@"my_number"];
</span><span class="cx"> JSValue *definitelyNull = [myPrivateProperties valueForKey:@"definitely_null"];
</span><span class="cx"> JSValue *notSureIfUndefined = [myPrivateProperties valueForKey:@"not_sure_if_undefined"];
</span><del>- checkResult(@"is_ham is true", [isHam isBoolean] && [isHam toBool]);
- checkResult(@"message is hello!", [message isString] && [@"hello!" isEqualToString:[message toString]]);
- checkResult(@"my_number is 42", [myNumber isNumber] && [myNumber toInt32] == 42);
- checkResult(@"definitely_null is null", [definitelyNull isNull]);
- checkResult(@"not_sure_if_undefined is undefined", [notSureIfUndefined isUndefined]);
</del><ins>+ checkResult(@"is_ham is true", isHam.isBoolean && [isHam toBool]);
+ checkResult(@"message is hello!", message.isString && [@"hello!" isEqualToString:[message toString]]);
+ checkResult(@"my_number is 42", myNumber.isNumber && [myNumber toInt32] == 42);
+ checkResult(@"definitely_null is null", definitelyNull.isNull);
+ checkResult(@"not_sure_if_undefined is undefined", notSureIfUndefined.isUndefined);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> checkResult(@"is_ham is nil", ![myPrivateProperties valueForKey:@"is_ham"]);
</span><span class="lines">@@ -652,7 +652,7 @@
</span><span class="cx"> JSContext *context = [[JSContext alloc] init];
</span><span class="cx"> __block bool emptyExceptionSourceURL = false;
</span><span class="cx"> context.exceptionHandler = ^(JSContext *, JSValue *exception) {
</span><del>- emptyExceptionSourceURL = [exception[@"sourceURL"] isUndefined];
</del><ins>+ emptyExceptionSourceURL = exception[@"sourceURL"].isUndefined;
</ins><span class="cx"> };
</span><span class="cx"> [context evaluateScript:@"!@#$%^&*() THIS IS NOT VALID JAVASCRIPT SYNTAX !@#$%^&*()"];
</span><span class="cx"> checkResult(@"evaluteScript: exception has no sourceURL", emptyExceptionSourceURL);
</span><span class="lines">@@ -713,7 +713,7 @@
</span><span class="cx"> return result; \
</span><span class="cx"> })"];
</span><span class="cx"> JSValue *result = [mulAddFunction callWithArguments:@[ @[ @2, @4, @8 ], @{ @"x":@0.5, @"y":@42 } ]];
</span><del>- checkResult(@"mulAddFunction", [result isObject] && [[result toString] isEqual:@"43,44,46"]);
</del><ins>+ checkResult(@"mulAddFunction", result.isObject && [[result toString] isEqual:@"43,44,46"]);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -738,7 +738,7 @@
</span><span class="cx"> checkResult(@"array.length after put to maxLength + 1", [[array[@"length"] toNumber] unsignedIntegerValue] == maxLength);
</span><span class="cx">
</span><span class="cx"> if (sizeof(NSUInteger) == 8)
</span><del>- checkResult(@"valueAtIndex:0 is undefined", [[array valueAtIndex:0] isUndefined]);
</del><ins>+ checkResult(@"valueAtIndex:0 is undefined", [array valueAtIndex:0].isUndefined);
</ins><span class="cx"> else
</span><span class="cx"> checkResult(@"valueAtIndex:0", [[array valueAtIndex:0] toInt32] == 24);
</span><span class="cx"> checkResult(@"valueAtIndex:lowIndex", [[array valueAtIndex:lowIndex] toInt32] == 42);
</span><span class="lines">@@ -862,7 +862,7 @@
</span><span class="cx"> context[@"testObjectA"] = testObject;
</span><span class="cx"> context[@"testObjectB"] = testObject;
</span><span class="cx"> JSValue *result = [context evaluateScript:@"testObjectA == testObjectB"];
</span><del>- checkResult(@"testObjectA == testObjectB", [result isBoolean] && [result toBool]);
</del><ins>+ checkResult(@"testObjectA == testObjectB", result.isBoolean && [result toBool]);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -882,7 +882,7 @@
</span><span class="cx"> context[@"testObject"] = testObject;
</span><span class="cx"> context[@"mul"] = ^(int x, int y){ return x * y; };
</span><span class="cx"> JSValue *result = [context evaluateScript:@"mul(testObject.six, 7)"];
</span><del>- checkResult(@"mul(testObject.six, 7)", [result isNumber] && [result toInt32] == 42);
</del><ins>+ checkResult(@"mul(testObject.six, 7)", result.isNumber && [result toInt32] == 42);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -913,7 +913,7 @@
</span><span class="cx"> TestObject* testObject = [TestObject testObject];
</span><span class="cx"> context[@"testObject"] = testObject;
</span><span class="cx"> JSValue *result = [context evaluateScript:@"testObject.getString()"];
</span><del>- checkResult(@"testObject.getString()", [result isString] && [result toInt32] == 42);
</del><ins>+ checkResult(@"testObject.getString()", result.isString && [result toInt32] == 42);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -929,7 +929,7 @@
</span><span class="cx"> TestObject* testObject = [TestObject testObject];
</span><span class="cx"> context[@"testObject"] = testObject;
</span><span class="cx"> JSValue *result = [context evaluateScript:@"testObject.getString.call(testObject)"];
</span><del>- checkResult(@"testObject.getString.call(testObject)", [result isString] && [result toInt32] == 42);
</del><ins>+ checkResult(@"testObject.getString.call(testObject)", result.isString && [result toInt32] == 42);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -946,9 +946,9 @@
</span><span class="cx"> TestObject* testObject = [TestObject testObject];
</span><span class="cx"> context[@"testObject"] = testObject;
</span><span class="cx"> JSValue *result = [context evaluateScript:@"var result = 0; testObject.callback(function(x){ result = x; }); result"];
</span><del>- checkResult(@"testObject.callback", [result isNumber] && [result toInt32] == 42);
</del><ins>+ checkResult(@"testObject.callback", result.isNumber && [result toInt32] == 42);
</ins><span class="cx"> result = [context evaluateScript:@"testObject.bogusCallback"];
</span><del>- checkResult(@"testObject.bogusCallback == undefined", [result isUndefined]);
</del><ins>+ checkResult(@"testObject.bogusCallback == undefined", result.isUndefined);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -956,7 +956,7 @@
</span><span class="cx"> TestObject *testObject = [TestObject testObject];
</span><span class="cx"> context[@"testObject"] = testObject;
</span><span class="cx"> JSValue *result = [context evaluateScript:@"Function.prototype.toString.call(testObject.callback)"];
</span><del>- checkResult(@"Function.prototype.toString", !context.exception && ![result isUndefined]);
</del><ins>+ checkResult(@"Function.prototype.toString", !context.exception && !result.isUndefined);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -1037,13 +1037,13 @@
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="cx"> JSValue *result = [context evaluateScript:@"testXYZ.onclick"];
</span><del>- checkResult(@"onclick still around after GC", !([result isNull] || [result isUndefined]));
</del><ins>+ checkResult(@"onclick still around after GC", !(result.isNull || result.isUndefined));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="cx"> JSValue *result = [context evaluateScript:@"testXYZ.weakOnclick"];
</span><del>- checkResult(@"weakOnclick not around after GC", [result isNull] || [result isUndefined]);
</del><ins>+ checkResult(@"weakOnclick not around after GC", result.isNull || result.isUndefined);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -1077,7 +1077,7 @@
</span><span class="cx"> context[@"testObject"] = testObject;
</span><span class="cx"> JSSynchronousGarbageCollectForDebugging([context JSGlobalContextRef]);
</span><span class="cx"> checkResult(@"weak value == nil", ![weakValue value]);
</span><del>- checkResult(@"root is still alive", ![context[@"testObject"] isUndefined]);
</del><ins>+ checkResult(@"root is still alive", !context[@"testObject"].isUndefined);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1107,7 +1107,7 @@
</span><span class="cx"> JSSynchronousGarbageCollectForDebugging([context JSGlobalContextRef]);
</span><span class="cx">
</span><span class="cx"> JSValue *myCustomProperty = [context evaluateScript:@"getLastNodeInChain(root).myCustomProperty"];
</span><del>- checkResult(@"My custom property == 42", [myCustomProperty isNumber] && [myCustomProperty toInt32] == 42);
</del><ins>+ checkResult(@"My custom property == 42", myCustomProperty.isNumber && [myCustomProperty toInt32] == 42);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -1139,7 +1139,7 @@
</span><span class="cx"> JSSynchronousGarbageCollectForDebugging([context JSGlobalContextRef]);
</span><span class="cx">
</span><span class="cx"> JSValue *myCustomProperty = [context evaluateScript:@"getLastNodeInChain(root).myCustomProperty"];
</span><del>- checkResult(@"duplicate calls to addManagedReference don't cause things to die", [myCustomProperty isNumber] && [myCustomProperty toInt32] == 42);
</del><ins>+ checkResult(@"duplicate calls to addManagedReference don't cause things to die", myCustomProperty.isNumber && [myCustomProperty toInt32] == 42);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span><span class="lines">@@ -1228,7 +1228,7 @@
</span><span class="cx"> NSLog(@"I'm intentionally not returning anything.");
</span><span class="cx"> };
</span><span class="cx"> JSValue *result = [context evaluateScript:@"new MyClass()"];
</span><del>- checkResult(@"result === undefined", [result isUndefined]);
</del><ins>+ checkResult(@"result === undefined", result.isUndefined);
</ins><span class="cx"> checkResult(@"exception.message is correct'", context.exception
</span><span class="cx"> && [@"Objective-C blocks called as constructors must return an object." isEqualToString:[context.exception[@"message"] toString]]);
</span><span class="cx"> }
</span><span class="lines">@@ -1350,7 +1350,7 @@
</span><span class="cx"> return [[UnexportedObject alloc] init];
</span><span class="cx"> };
</span><span class="cx"> JSValue *result = [context evaluateScript:@"(makeObject() instanceof UnexportedObject)"];
</span><del>- checkResult(@"makeObject() instanceof UnexportedObject", [result isBoolean] && [result toBool]);
</del><ins>+ checkResult(@"makeObject() instanceof UnexportedObject", result.isBoolean && [result toBool]);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @autoreleasepool {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (182335 => 182336)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-04-03 21:44:41 UTC (rev 182335)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-04-03 22:18:05 UTC (rev 182336)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-04-03 Geoffrey Garen <ggaren@apple.com>
+
+ is* API methods should be @properties
+ https://bugs.webkit.org/show_bug.cgi?id=143388
+
+ Reviewed by Mark Lam.
+
+ This appears to be the preferred idiom in WebKit, CA, AppKit, and
+ Foundation.
+
+ * API/JSValue.h: Be @properties.
+
+ * API/tests/testapi.mm:
+ (testObjectiveCAPI): Use the @properties.
+
</ins><span class="cx"> 2015-04-03 Mark Lam <mark.lam@apple.com>
</span><span class="cx">
</span><span class="cx"> Some JSC Options refactoring and enhancements.
</span></span></pre>
</div>
</div>
</body>
</html>