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

Side by Side Diff: test/cctest/test-parsing.cc

Issue 181543002: Eliminate extended mode, and other modes clean-up (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « test/cctest/test-mark-compact.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 847 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 i += input_offset; 858 i += input_offset;
859 character_length -= output_adjust; 859 character_length -= output_adjust;
860 } 860 }
861 } 861 }
862 } 862 }
863 return character_length; 863 return character_length;
864 } 864 }
865 865
866 866
867 TEST(ScopePositions) { 867 TEST(ScopePositions) {
868 v8::internal::FLAG_harmony_scoping = true;
869
868 // Test the parser for correctly setting the start and end positions 870 // Test the parser for correctly setting the start and end positions
869 // of a scope. We check the scope positions of exactly one scope 871 // of a scope. We check the scope positions of exactly one scope
870 // nested in the global scope of a program. 'inner source' is the 872 // nested in the global scope of a program. 'inner source' is the
871 // source code that determines the part of the source belonging 873 // source code that determines the part of the source belonging
872 // to the nested scope. 'outer_prefix' and 'outer_suffix' are 874 // to the nested scope. 'outer_prefix' and 'outer_suffix' are
873 // parts of the source that belong to the global scope. 875 // parts of the source that belong to the global scope.
874 struct SourceData { 876 struct SourceData {
875 const char* outer_prefix; 877 const char* outer_prefix;
876 const char* inner_source; 878 const char* inner_source;
877 const char* outer_suffix; 879 const char* outer_suffix;
878 i::ScopeType scope_type; 880 i::ScopeType scope_type;
879 i::LanguageMode language_mode; 881 i::StrictMode strict_mode;
880 }; 882 };
881 883
882 const SourceData source_data[] = { 884 const SourceData source_data[] = {
883 { " with ({}) ", "{ block; }", " more;", i::WITH_SCOPE, i::SLOPPY_MODE }, 885 { " with ({}) ", "{ block; }", " more;", i::WITH_SCOPE, i::SLOPPY },
884 { " with ({}) ", "{ block; }", "; more;", i::WITH_SCOPE, i::SLOPPY_MODE }, 886 { " with ({}) ", "{ block; }", "; more;", i::WITH_SCOPE, i::SLOPPY },
885 { " with ({}) ", "{\n" 887 { " with ({}) ", "{\n"
886 " block;\n" 888 " block;\n"
887 " }", "\n" 889 " }", "\n"
888 " more;", i::WITH_SCOPE, i::SLOPPY_MODE }, 890 " more;", i::WITH_SCOPE, i::SLOPPY },
889 { " with ({}) ", "statement;", " more;", i::WITH_SCOPE, i::SLOPPY_MODE }, 891 { " with ({}) ", "statement;", " more;", i::WITH_SCOPE, i::SLOPPY },
890 { " with ({}) ", "statement", "\n" 892 { " with ({}) ", "statement", "\n"
891 " more;", i::WITH_SCOPE, i::SLOPPY_MODE }, 893 " more;", i::WITH_SCOPE, i::SLOPPY },
892 { " with ({})\n" 894 { " with ({})\n"
893 " ", "statement;", "\n" 895 " ", "statement;", "\n"
894 " more;", i::WITH_SCOPE, i::SLOPPY_MODE }, 896 " more;", i::WITH_SCOPE, i::SLOPPY },
895 { " try {} catch ", "(e) { block; }", " more;", 897 { " try {} catch ", "(e) { block; }", " more;",
896 i::CATCH_SCOPE, i::SLOPPY_MODE }, 898 i::CATCH_SCOPE, i::SLOPPY },
897 { " try {} catch ", "(e) { block; }", "; more;", 899 { " try {} catch ", "(e) { block; }", "; more;",
898 i::CATCH_SCOPE, i::SLOPPY_MODE }, 900 i::CATCH_SCOPE, i::SLOPPY },
899 { " try {} catch ", "(e) {\n" 901 { " try {} catch ", "(e) {\n"
900 " block;\n" 902 " block;\n"
901 " }", "\n" 903 " }", "\n"
902 " more;", i::CATCH_SCOPE, i::SLOPPY_MODE }, 904 " more;", i::CATCH_SCOPE, i::SLOPPY },
903 { " try {} catch ", "(e) { block; }", " finally { block; } more;", 905 { " try {} catch ", "(e) { block; }", " finally { block; } more;",
904 i::CATCH_SCOPE, i::SLOPPY_MODE }, 906 i::CATCH_SCOPE, i::SLOPPY },
905 { " start;\n" 907 { " start;\n"
906 " ", "{ let block; }", " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 908 " ", "{ let block; }", " more;", i::BLOCK_SCOPE, i::STRICT },
907 { " start;\n" 909 { " start;\n"
908 " ", "{ let block; }", "; more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 910 " ", "{ let block; }", "; more;", i::BLOCK_SCOPE, i::STRICT },
909 { " start;\n" 911 { " start;\n"
910 " ", "{\n" 912 " ", "{\n"
911 " let block;\n" 913 " let block;\n"
912 " }", "\n" 914 " }", "\n"
913 " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 915 " more;", i::BLOCK_SCOPE, i::STRICT },
914 { " start;\n" 916 { " start;\n"
915 " function fun", "(a,b) { infunction; }", " more;", 917 " function fun", "(a,b) { infunction; }", " more;",
916 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 918 i::FUNCTION_SCOPE, i::SLOPPY },
917 { " start;\n" 919 { " start;\n"
918 " function fun", "(a,b) {\n" 920 " function fun", "(a,b) {\n"
919 " infunction;\n" 921 " infunction;\n"
920 " }", "\n" 922 " }", "\n"
921 " more;", i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 923 " more;", i::FUNCTION_SCOPE, i::SLOPPY },
922 { " (function fun", "(a,b) { infunction; }", ")();", 924 { " (function fun", "(a,b) { infunction; }", ")();",
923 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 925 i::FUNCTION_SCOPE, i::SLOPPY },
924 { " for ", "(let x = 1 ; x < 10; ++ x) { block; }", " more;", 926 { " for ", "(let x = 1 ; x < 10; ++ x) { block; }", " more;",
925 i::BLOCK_SCOPE, i::EXTENDED_MODE }, 927 i::BLOCK_SCOPE, i::STRICT },
926 { " for ", "(let x = 1 ; x < 10; ++ x) { block; }", "; more;", 928 { " for ", "(let x = 1 ; x < 10; ++ x) { block; }", "; more;",
927 i::BLOCK_SCOPE, i::EXTENDED_MODE }, 929 i::BLOCK_SCOPE, i::STRICT },
928 { " for ", "(let x = 1 ; x < 10; ++ x) {\n" 930 { " for ", "(let x = 1 ; x < 10; ++ x) {\n"
929 " block;\n" 931 " block;\n"
930 " }", "\n" 932 " }", "\n"
931 " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 933 " more;", i::BLOCK_SCOPE, i::STRICT },
932 { " for ", "(let x = 1 ; x < 10; ++ x) statement;", " more;", 934 { " for ", "(let x = 1 ; x < 10; ++ x) statement;", " more;",
933 i::BLOCK_SCOPE, i::EXTENDED_MODE }, 935 i::BLOCK_SCOPE, i::STRICT },
934 { " for ", "(let x = 1 ; x < 10; ++ x) statement", "\n" 936 { " for ", "(let x = 1 ; x < 10; ++ x) statement", "\n"
935 " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 937 " more;", i::BLOCK_SCOPE, i::STRICT },
936 { " for ", "(let x = 1 ; x < 10; ++ x)\n" 938 { " for ", "(let x = 1 ; x < 10; ++ x)\n"
937 " statement;", "\n" 939 " statement;", "\n"
938 " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 940 " more;", i::BLOCK_SCOPE, i::STRICT },
939 { " for ", "(let x in {}) { block; }", " more;", 941 { " for ", "(let x in {}) { block; }", " more;",
940 i::BLOCK_SCOPE, i::EXTENDED_MODE }, 942 i::BLOCK_SCOPE, i::STRICT },
941 { " for ", "(let x in {}) { block; }", "; more;", 943 { " for ", "(let x in {}) { block; }", "; more;",
942 i::BLOCK_SCOPE, i::EXTENDED_MODE }, 944 i::BLOCK_SCOPE, i::STRICT },
943 { " for ", "(let x in {}) {\n" 945 { " for ", "(let x in {}) {\n"
944 " block;\n" 946 " block;\n"
945 " }", "\n" 947 " }", "\n"
946 " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 948 " more;", i::BLOCK_SCOPE, i::STRICT },
947 { " for ", "(let x in {}) statement;", " more;", 949 { " for ", "(let x in {}) statement;", " more;",
948 i::BLOCK_SCOPE, i::EXTENDED_MODE }, 950 i::BLOCK_SCOPE, i::STRICT },
949 { " for ", "(let x in {}) statement", "\n" 951 { " for ", "(let x in {}) statement", "\n"
950 " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 952 " more;", i::BLOCK_SCOPE, i::STRICT },
951 { " for ", "(let x in {})\n" 953 { " for ", "(let x in {})\n"
952 " statement;", "\n" 954 " statement;", "\n"
953 " more;", i::BLOCK_SCOPE, i::EXTENDED_MODE }, 955 " more;", i::BLOCK_SCOPE, i::STRICT },
954 // Check that 6-byte and 4-byte encodings of UTF-8 strings do not throw 956 // Check that 6-byte and 4-byte encodings of UTF-8 strings do not throw
955 // the preparser off in terms of byte offsets. 957 // the preparser off in terms of byte offsets.
956 // 6 byte encoding. 958 // 6 byte encoding.
957 { " 'foo\355\240\201\355\260\211';\n" 959 { " 'foo\355\240\201\355\260\211';\n"
958 " (function fun", "(a,b) { infunction; }", ")();", 960 " (function fun", "(a,b) { infunction; }", ")();",
959 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 961 i::FUNCTION_SCOPE, i::SLOPPY },
960 // 4 byte encoding. 962 // 4 byte encoding.
961 { " 'foo\360\220\220\212';\n" 963 { " 'foo\360\220\220\212';\n"
962 " (function fun", "(a,b) { infunction; }", ")();", 964 " (function fun", "(a,b) { infunction; }", ")();",
963 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 965 i::FUNCTION_SCOPE, i::SLOPPY },
964 // 3 byte encoding of \u0fff. 966 // 3 byte encoding of \u0fff.
965 { " 'foo\340\277\277';\n" 967 { " 'foo\340\277\277';\n"
966 " (function fun", "(a,b) { infunction; }", ")();", 968 " (function fun", "(a,b) { infunction; }", ")();",
967 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 969 i::FUNCTION_SCOPE, i::SLOPPY },
968 // Broken 6 byte encoding with missing last byte. 970 // Broken 6 byte encoding with missing last byte.
969 { " 'foo\355\240\201\355\211';\n" 971 { " 'foo\355\240\201\355\211';\n"
970 " (function fun", "(a,b) { infunction; }", ")();", 972 " (function fun", "(a,b) { infunction; }", ")();",
971 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 973 i::FUNCTION_SCOPE, i::SLOPPY },
972 // Broken 3 byte encoding of \u0fff with missing last byte. 974 // Broken 3 byte encoding of \u0fff with missing last byte.
973 { " 'foo\340\277';\n" 975 { " 'foo\340\277';\n"
974 " (function fun", "(a,b) { infunction; }", ")();", 976 " (function fun", "(a,b) { infunction; }", ")();",
975 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 977 i::FUNCTION_SCOPE, i::SLOPPY },
976 // Broken 3 byte encoding of \u0fff with missing 2 last bytes. 978 // Broken 3 byte encoding of \u0fff with missing 2 last bytes.
977 { " 'foo\340';\n" 979 { " 'foo\340';\n"
978 " (function fun", "(a,b) { infunction; }", ")();", 980 " (function fun", "(a,b) { infunction; }", ")();",
979 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 981 i::FUNCTION_SCOPE, i::SLOPPY },
980 // Broken 3 byte encoding of \u00ff should be a 2 byte encoding. 982 // Broken 3 byte encoding of \u00ff should be a 2 byte encoding.
981 { " 'foo\340\203\277';\n" 983 { " 'foo\340\203\277';\n"
982 " (function fun", "(a,b) { infunction; }", ")();", 984 " (function fun", "(a,b) { infunction; }", ")();",
983 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 985 i::FUNCTION_SCOPE, i::SLOPPY },
984 // Broken 3 byte encoding of \u007f should be a 2 byte encoding. 986 // Broken 3 byte encoding of \u007f should be a 2 byte encoding.
985 { " 'foo\340\201\277';\n" 987 { " 'foo\340\201\277';\n"
986 " (function fun", "(a,b) { infunction; }", ")();", 988 " (function fun", "(a,b) { infunction; }", ")();",
987 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 989 i::FUNCTION_SCOPE, i::SLOPPY },
988 // Unpaired lead surrogate. 990 // Unpaired lead surrogate.
989 { " 'foo\355\240\201';\n" 991 { " 'foo\355\240\201';\n"
990 " (function fun", "(a,b) { infunction; }", ")();", 992 " (function fun", "(a,b) { infunction; }", ")();",
991 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 993 i::FUNCTION_SCOPE, i::SLOPPY },
992 // Unpaired lead surrogate where following code point is a 3 byte sequence. 994 // Unpaired lead surrogate where following code point is a 3 byte sequence.
993 { " 'foo\355\240\201\340\277\277';\n" 995 { " 'foo\355\240\201\340\277\277';\n"
994 " (function fun", "(a,b) { infunction; }", ")();", 996 " (function fun", "(a,b) { infunction; }", ")();",
995 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 997 i::FUNCTION_SCOPE, i::SLOPPY },
996 // Unpaired lead surrogate where following code point is a 4 byte encoding 998 // Unpaired lead surrogate where following code point is a 4 byte encoding
997 // of a trail surrogate. 999 // of a trail surrogate.
998 { " 'foo\355\240\201\360\215\260\211';\n" 1000 { " 'foo\355\240\201\360\215\260\211';\n"
999 " (function fun", "(a,b) { infunction; }", ")();", 1001 " (function fun", "(a,b) { infunction; }", ")();",
1000 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1002 i::FUNCTION_SCOPE, i::SLOPPY },
1001 // Unpaired trail surrogate. 1003 // Unpaired trail surrogate.
1002 { " 'foo\355\260\211';\n" 1004 { " 'foo\355\260\211';\n"
1003 " (function fun", "(a,b) { infunction; }", ")();", 1005 " (function fun", "(a,b) { infunction; }", ")();",
1004 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1006 i::FUNCTION_SCOPE, i::SLOPPY },
1005 // 2 byte encoding of \u00ff. 1007 // 2 byte encoding of \u00ff.
1006 { " 'foo\303\277';\n" 1008 { " 'foo\303\277';\n"
1007 " (function fun", "(a,b) { infunction; }", ")();", 1009 " (function fun", "(a,b) { infunction; }", ")();",
1008 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1010 i::FUNCTION_SCOPE, i::SLOPPY },
1009 // Broken 2 byte encoding of \u00ff with missing last byte. 1011 // Broken 2 byte encoding of \u00ff with missing last byte.
1010 { " 'foo\303';\n" 1012 { " 'foo\303';\n"
1011 " (function fun", "(a,b) { infunction; }", ")();", 1013 " (function fun", "(a,b) { infunction; }", ")();",
1012 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1014 i::FUNCTION_SCOPE, i::SLOPPY },
1013 // Broken 2 byte encoding of \u007f should be a 1 byte encoding. 1015 // Broken 2 byte encoding of \u007f should be a 1 byte encoding.
1014 { " 'foo\301\277';\n" 1016 { " 'foo\301\277';\n"
1015 " (function fun", "(a,b) { infunction; }", ")();", 1017 " (function fun", "(a,b) { infunction; }", ")();",
1016 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1018 i::FUNCTION_SCOPE, i::SLOPPY },
1017 // Illegal 5 byte encoding. 1019 // Illegal 5 byte encoding.
1018 { " 'foo\370\277\277\277\277';\n" 1020 { " 'foo\370\277\277\277\277';\n"
1019 " (function fun", "(a,b) { infunction; }", ")();", 1021 " (function fun", "(a,b) { infunction; }", ")();",
1020 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1022 i::FUNCTION_SCOPE, i::SLOPPY },
1021 // Illegal 6 byte encoding. 1023 // Illegal 6 byte encoding.
1022 { " 'foo\374\277\277\277\277\277';\n" 1024 { " 'foo\374\277\277\277\277\277';\n"
1023 " (function fun", "(a,b) { infunction; }", ")();", 1025 " (function fun", "(a,b) { infunction; }", ")();",
1024 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1026 i::FUNCTION_SCOPE, i::SLOPPY },
1025 // Illegal 0xfe byte 1027 // Illegal 0xfe byte
1026 { " 'foo\376\277\277\277\277\277\277';\n" 1028 { " 'foo\376\277\277\277\277\277\277';\n"
1027 " (function fun", "(a,b) { infunction; }", ")();", 1029 " (function fun", "(a,b) { infunction; }", ")();",
1028 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1030 i::FUNCTION_SCOPE, i::SLOPPY },
1029 // Illegal 0xff byte 1031 // Illegal 0xff byte
1030 { " 'foo\377\277\277\277\277\277\277\277';\n" 1032 { " 'foo\377\277\277\277\277\277\277\277';\n"
1031 " (function fun", "(a,b) { infunction; }", ")();", 1033 " (function fun", "(a,b) { infunction; }", ")();",
1032 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1034 i::FUNCTION_SCOPE, i::SLOPPY },
1033 { " 'foo';\n" 1035 { " 'foo';\n"
1034 " (function fun", "(a,b) { 'bar\355\240\201\355\260\213'; }", ")();", 1036 " (function fun", "(a,b) { 'bar\355\240\201\355\260\213'; }", ")();",
1035 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1037 i::FUNCTION_SCOPE, i::SLOPPY },
1036 { " 'foo';\n" 1038 { " 'foo';\n"
1037 " (function fun", "(a,b) { 'bar\360\220\220\214'; }", ")();", 1039 " (function fun", "(a,b) { 'bar\360\220\220\214'; }", ")();",
1038 i::FUNCTION_SCOPE, i::SLOPPY_MODE }, 1040 i::FUNCTION_SCOPE, i::SLOPPY },
1039 { NULL, NULL, NULL, i::EVAL_SCOPE, i::SLOPPY_MODE } 1041 { NULL, NULL, NULL, i::EVAL_SCOPE, i::SLOPPY }
1040 }; 1042 };
1041 1043
1042 i::Isolate* isolate = CcTest::i_isolate(); 1044 i::Isolate* isolate = CcTest::i_isolate();
1043 i::Factory* factory = isolate->factory(); 1045 i::Factory* factory = isolate->factory();
1044 1046
1045 v8::HandleScope handles(CcTest::isolate()); 1047 v8::HandleScope handles(CcTest::isolate());
1046 v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate()); 1048 v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate());
1047 v8::Context::Scope context_scope(context); 1049 v8::Context::Scope context_scope(context);
1048 1050
1049 int marker; 1051 int marker;
(...skipping 18 matching lines...) Expand all
1068 // Parse program source. 1070 // Parse program source.
1069 i::Handle<i::String> source( 1071 i::Handle<i::String> source(
1070 factory->NewStringFromUtf8(i::CStrVector(program.start()))); 1072 factory->NewStringFromUtf8(i::CStrVector(program.start())));
1071 CHECK_EQ(source->length(), kProgramSize); 1073 CHECK_EQ(source->length(), kProgramSize);
1072 i::Handle<i::Script> script = factory->NewScript(source); 1074 i::Handle<i::Script> script = factory->NewScript(source);
1073 i::CompilationInfoWithZone info(script); 1075 i::CompilationInfoWithZone info(script);
1074 i::Parser parser(&info); 1076 i::Parser parser(&info);
1075 parser.set_allow_lazy(true); 1077 parser.set_allow_lazy(true);
1076 parser.set_allow_harmony_scoping(true); 1078 parser.set_allow_harmony_scoping(true);
1077 info.MarkAsGlobal(); 1079 info.MarkAsGlobal();
1078 info.SetLanguageMode(source_data[i].language_mode); 1080 info.SetStrictMode(source_data[i].strict_mode);
1079 parser.Parse(); 1081 parser.Parse();
1080 CHECK(info.function() != NULL); 1082 CHECK(info.function() != NULL);
1081 1083
1082 // Check scope types and positions. 1084 // Check scope types and positions.
1083 i::Scope* scope = info.function()->scope(); 1085 i::Scope* scope = info.function()->scope();
1084 CHECK(scope->is_global_scope()); 1086 CHECK(scope->is_global_scope());
1085 CHECK_EQ(scope->start_position(), 0); 1087 CHECK_EQ(scope->start_position(), 0);
1086 CHECK_EQ(scope->end_position(), kProgramSize); 1088 CHECK_EQ(scope->end_position(), kProgramSize);
1087 CHECK_EQ(scope->inner_scopes()->length(), 1); 1089 CHECK_EQ(scope->inner_scopes()->length(), 1);
1088 1090
(...skipping 12 matching lines...) Expand all
1101 i::Factory* factory = isolate->factory(); 1103 i::Factory* factory = isolate->factory();
1102 const char* message = data->BuildMessage(); 1104 const char* message = data->BuildMessage();
1103 i::Handle<i::String> format = v8::Utils::OpenHandle( 1105 i::Handle<i::String> format = v8::Utils::OpenHandle(
1104 *v8::String::NewFromUtf8(CcTest::isolate(), message)); 1106 *v8::String::NewFromUtf8(CcTest::isolate(), message));
1105 i::Vector<const char*> args = data->BuildArgs(); 1107 i::Vector<const char*> args = data->BuildArgs();
1106 i::Handle<i::JSArray> args_array = factory->NewJSArray(args.length()); 1108 i::Handle<i::JSArray> args_array = factory->NewJSArray(args.length());
1107 for (int i = 0; i < args.length(); i++) { 1109 for (int i = 0; i < args.length(); i++) {
1108 i::JSArray::SetElement( 1110 i::JSArray::SetElement(
1109 args_array, i, v8::Utils::OpenHandle(*v8::String::NewFromUtf8( 1111 args_array, i, v8::Utils::OpenHandle(*v8::String::NewFromUtf8(
1110 CcTest::isolate(), args[i])), 1112 CcTest::isolate(), args[i])),
1111 NONE, i::kSloppyMode); 1113 NONE, i::SLOPPY);
1112 } 1114 }
1113 i::Handle<i::JSObject> builtins(isolate->js_builtins_object()); 1115 i::Handle<i::JSObject> builtins(isolate->js_builtins_object());
1114 i::Handle<i::Object> format_fun = 1116 i::Handle<i::Object> format_fun =
1115 i::GetProperty(builtins, "FormatMessage"); 1117 i::GetProperty(builtins, "FormatMessage");
1116 i::Handle<i::Object> arg_handles[] = { format, args_array }; 1118 i::Handle<i::Object> arg_handles[] = { format, args_array };
1117 bool has_exception = false; 1119 bool has_exception = false;
1118 i::Handle<i::Object> result = i::Execution::Call( 1120 i::Handle<i::Object> result = i::Execution::Call(
1119 isolate, format_fun, builtins, 2, arg_handles, &has_exception); 1121 isolate, format_fun, builtins, 2, arg_handles, &has_exception);
1120 CHECK(!has_exception); 1122 CHECK(!has_exception);
1121 CHECK(result->IsString()); 1123 CHECK(result->IsString());
(...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after
2151 2153
2152 const char* statement_data[] = { 2154 const char* statement_data[] = {
2153 "new foo bar", 2155 "new foo bar",
2154 "new ) foo", 2156 "new ) foo",
2155 "new ++foo", 2157 "new ++foo",
2156 NULL 2158 NULL
2157 }; 2159 };
2158 2160
2159 RunParserSyncTest(context_data, statement_data, kError); 2161 RunParserSyncTest(context_data, statement_data, kError);
2160 } 2162 }
OLDNEW
« no previous file with comments | « test/cctest/test-mark-compact.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698