Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(904)

Side by Side Diff: test/mjsunit/object-literal.js

Issue 3109002: Removed support for object literal get/set with number/string property name. (Closed)
Patch Set: Addressed review comment. Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/runtime.cc ('k') | test/sputnik/sputnik.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 "while", 139 "while",
140 "with", 140 "with",
141 ]; 141 ];
142 142
143 function testKeywordProperty(keyword) { 143 function testKeywordProperty(keyword) {
144 try { 144 try {
145 // Sanity check that what we get is a keyword. 145 // Sanity check that what we get is a keyword.
146 eval("var " + keyword + " = 42;"); 146 eval("var " + keyword + " = 42;");
147 assertUnreachable("Not a keyword: " + keyword); 147 assertUnreachable("Not a keyword: " + keyword);
148 } catch (e) { } 148 } catch (e) { }
149 149
150 // Simple property, read and write. 150 // Simple property, read and write.
151 var x = eval("({" + keyword + ": 42})"); 151 var x = eval("({" + keyword + ": 42})");
152 assertEquals(42, x[keyword]); 152 assertEquals(42, x[keyword]);
153 assertEquals(42, eval("x." + keyword)); 153 assertEquals(42, eval("x." + keyword));
154 eval("x." + keyword + " = 37"); 154 eval("x." + keyword + " = 37");
155 assertEquals(37, x[keyword]); 155 assertEquals(37, x[keyword]);
156 assertEquals(37, eval("x." + keyword)); 156 assertEquals(37, eval("x." + keyword));
157 157
158 // Getter/setter property, read and write. 158 // Getter/setter property, read and write.
159 var y = eval("({value : 42, get " + keyword + "(){return this.value}," + 159 var y = eval("({value : 42, get " + keyword + "(){return this.value}," +
160 " set " + keyword + "(v) { this.value = v; }})"); 160 " set " + keyword + "(v) { this.value = v; }})");
161 assertEquals(42, y[keyword]); 161 assertEquals(42, y[keyword]);
162 assertEquals(42, eval("y." + keyword)); 162 assertEquals(42, eval("y." + keyword));
163 eval("y." + keyword + " = 37"); 163 eval("y." + keyword + " = 37");
164 assertEquals(37, y[keyword]); 164 assertEquals(37, y[keyword]);
165 assertEquals(37, eval("y." + keyword)); 165 assertEquals(37, eval("y." + keyword));
166 166
167 // Quoted keyword works is read back by unquoted as well. 167 // Quoted keyword works is read back by unquoted as well.
168 var z = eval("({\"" + keyword + "\": 42})"); 168 var z = eval("({\"" + keyword + "\": 42})");
169 assertEquals(42, z[keyword]); 169 assertEquals(42, z[keyword]);
170 assertEquals(42, eval("z." + keyword)); 170 assertEquals(42, eval("z." + keyword));
171 171
172 // Function property, called. 172 // Function property, called.
173 var was_called; 173 var was_called;
174 function test_call() { this.was_called = true; was_called = true; } 174 function test_call() { this.was_called = true; was_called = true; }
175 var w = eval("({" + keyword + ": test_call, was_called: false})"); 175 var w = eval("({" + keyword + ": test_call, was_called: false})");
176 eval("w." + keyword + "();"); 176 eval("w." + keyword + "();");
177 assertTrue(was_called); 177 assertTrue(was_called);
178 assertTrue(w.was_called); 178 assertTrue(w.was_called);
179 179
180 // Function property, constructed. 180 // Function property, constructed.
181 function construct() { this.constructed = true; } 181 function construct() { this.constructed = true; }
182 var v = eval("({" + keyword + ": construct})"); 182 var v = eval("({" + keyword + ": construct})");
183 var vo = eval("new v." + keyword + "()"); 183 var vo = eval("new v." + keyword + "()");
184 assertTrue(vo instanceof construct); 184 assertTrue(vo instanceof construct);
185 assertTrue(vo.constructed); 185 assertTrue(vo.constructed);
186 } 186 }
187 187
188 for (var i = 0; i < keywords.length; i++) { 188 for (var i = 0; i < keywords.length; i++) {
189 testKeywordProperty(keywords[i]); 189 testKeywordProperty(keywords[i]);
190 } 190 }
191
192 // Test getter and setter properties with string/number literal names.
193
194 var obj = {get 42() { return 42; },
195 get 3.14() { return "PI"; },
196 get "PI"() { return 3.14; },
197 readback: 0,
198 set 37(v) { this.readback = v; },
199 set 1.44(v) { this.readback = v; },
200 set "Poo"(v) { this.readback = v; }}
201
202 assertEquals(42, obj[42]);
203 assertEquals("PI", obj[3.14]);
204 assertEquals(3.14, obj["PI"]);
205 obj[37] = "t1";
206 assertEquals("t1", obj.readback);
207 obj[1.44] = "t2";
208 assertEquals("t2", obj.readback);
209 obj["Poo"] = "t3";
210 assertEquals("t3", obj.readback);
211
212
OLDNEW
« no previous file with comments | « src/runtime.cc ('k') | test/sputnik/sputnik.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698