OLD | NEW |
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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 assertThrows('"\\u111@"'); | 64 assertThrows('"\\u111@"'); |
65 assertEquals("\\x1@", /\x1@/.source); | 65 assertEquals("\\x1@", /\x1@/.source); |
66 assertEquals("\\u111@", /\u111@/.source); | 66 assertEquals("\\u111@", /\u111@/.source); |
67 | 67 |
68 // "G" comes just after "F". | 68 // "G" comes just after "F". |
69 assertThrows('"\\x1G"'); | 69 assertThrows('"\\x1G"'); |
70 assertThrows('"\\u111G"'); | 70 assertThrows('"\\u111G"'); |
71 assertEquals("\\x1G", /\x1G/.source); | 71 assertEquals("\\x1G", /\x1G/.source); |
72 assertEquals("\\u111G", /\u111G/.source); | 72 assertEquals("\\u111G", /\u111G/.source); |
73 | 73 |
| 74 // Test that octal literals continue to be forbidden in template even |
| 75 // when followed by a string containing an octal literal. |
| 76 assertThrows('`\\1`\n"\\1"'); |
| 77 |
74 // Test some materialized array literals. | 78 // Test some materialized array literals. |
75 assertEquals([1,2,3,4], eval('[1,2,3,4]')); | 79 assertEquals([1,2,3,4], eval('[1,2,3,4]')); |
76 assertEquals([[1,2],3,4], eval('[[1,2],3,4]')); | 80 assertEquals([[1,2],3,4], eval('[[1,2],3,4]')); |
77 assertEquals([1,[2,3,4]], eval('[1,[2,3,4]]')); | 81 assertEquals([1,[2,3,4]], eval('[1,[2,3,4]]')); |
78 | 82 |
79 assertEquals([1,2,3,4], eval('var a=1, b=2; [a,b,3,4]')) | 83 assertEquals([1,2,3,4], eval('var a=1, b=2; [a,b,3,4]')) |
80 assertEquals([1,2,3,4], eval('var a=1, b=2, c = [a,b,3,4]; c')); | 84 assertEquals([1,2,3,4], eval('var a=1, b=2, c = [a,b,3,4]; c')); |
81 | 85 |
82 function double(x) { return x + x; } | 86 function double(x) { return x + x; } |
83 var s = 'var a = 1, b = 2; [double(a), double(b), double(3), double(4)]'; | 87 var s = 'var a = 1, b = 2; [double(a), double(b), double(3), double(4)]'; |
84 assertEquals([2,4,6,8], eval(s)); | 88 assertEquals([2,4,6,8], eval(s)); |
85 | 89 |
86 // Test array literals in effect context. | 90 // Test array literals in effect context. |
87 assertEquals(17, eval('[1,2,3,4]; 17')); | 91 assertEquals(17, eval('[1,2,3,4]; 17')); |
88 assertEquals(19, eval('var a=1, b=2; [a,b,3,4]; 19')); | 92 assertEquals(19, eval('var a=1, b=2; [a,b,3,4]; 19')); |
89 assertEquals(23, eval('var a=1, b=2; c=23; [a,b,3,4]; c')); | 93 assertEquals(23, eval('var a=1, b=2; c=23; [a,b,3,4]; c')); |
90 | 94 |
91 // Test that literals work for non-smi indices. | 95 // Test that literals work for non-smi indices. |
92 // Ensure hash-map collision if using value as hash. | 96 // Ensure hash-map collision if using value as hash. |
93 var o = {"2345678901" : 42, "2345678901" : 30}; | 97 var o = {"2345678901" : 42, "2345678901" : 30}; |
OLD | NEW |