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

Side by Side Diff: pkg/analyzer/lib/src/generated/parser.dart

Issue 680863002: Remove JavaStringBuilder (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // This code was auto-generated, is not intended to be edited, and is subject to 5 // This code was auto-generated, is not intended to be edited, and is subject to
6 // significant change. Please see the README file for more information. 6 // significant change. Please see the README file for more information.
7 7
8 library engine.parser; 8 library engine.parser;
9 9
10 import 'dart:collection'; 10 import 'dart:collection';
(...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after
1422 */ 1422 */
1423 Token staticKeyword; 1423 Token staticKeyword;
1424 1424
1425 /** 1425 /**
1426 * The token representing the keyword 'var', or `null` if the keyword was not found. 1426 * The token representing the keyword 'var', or `null` if the keyword was not found.
1427 */ 1427 */
1428 Token varKeyword; 1428 Token varKeyword;
1429 1429
1430 @override 1430 @override
1431 String toString() { 1431 String toString() {
1432 JavaStringBuilder builder = new JavaStringBuilder(); 1432 StringBuffer buffer = new StringBuffer();
1433 bool needsSpace = _appendKeyword(builder, false, abstractKeyword); 1433 bool needsSpace = _appendKeyword(buffer, false, abstractKeyword);
1434 needsSpace = _appendKeyword(builder, needsSpace, constKeyword); 1434 needsSpace = _appendKeyword(buffer, needsSpace, constKeyword);
1435 needsSpace = _appendKeyword(builder, needsSpace, externalKeyword); 1435 needsSpace = _appendKeyword(buffer, needsSpace, externalKeyword);
1436 needsSpace = _appendKeyword(builder, needsSpace, factoryKeyword); 1436 needsSpace = _appendKeyword(buffer, needsSpace, factoryKeyword);
1437 needsSpace = _appendKeyword(builder, needsSpace, finalKeyword); 1437 needsSpace = _appendKeyword(buffer, needsSpace, finalKeyword);
1438 needsSpace = _appendKeyword(builder, needsSpace, staticKeyword); 1438 needsSpace = _appendKeyword(buffer, needsSpace, staticKeyword);
1439 _appendKeyword(builder, needsSpace, varKeyword); 1439 _appendKeyword(buffer, needsSpace, varKeyword);
1440 return builder.toString(); 1440 return buffer.toString();
1441 } 1441 }
1442 1442
1443 /** 1443 /**
1444 * If the given keyword is not `null`, append it to the given builder, prefixi ng it with a 1444 * If the given keyword is not `null`, append it to the given builder, prefixi ng it with a
1445 * space if needed. 1445 * space if needed.
1446 * 1446 *
1447 * @param builder the builder to which the keyword will be appended 1447 * @param builder the builder to which the keyword will be appended
1448 * @param needsSpace `true` if the keyword needs to be prefixed with a space 1448 * @param needsSpace `true` if the keyword needs to be prefixed with a space
1449 * @param keyword the keyword to be appended 1449 * @param keyword the keyword to be appended
1450 * @return `true` if subsequent keywords need to be prefixed with a space 1450 * @return `true` if subsequent keywords need to be prefixed with a space
1451 */ 1451 */
1452 bool _appendKeyword(JavaStringBuilder builder, bool needsSpace, Token keyword) { 1452 bool _appendKeyword(StringBuffer buffer, bool needsSpace, Token keyword) {
1453 if (keyword != null) { 1453 if (keyword != null) {
1454 if (needsSpace) { 1454 if (needsSpace) {
1455 builder.appendChar(0x20); 1455 buffer.writeCharCode(0x20);
1456 } 1456 }
1457 builder.append(keyword.lexeme); 1457 buffer.write(keyword.lexeme);
1458 return true; 1458 return true;
1459 } 1459 }
1460 return needsSpace; 1460 return needsSpace;
1461 } 1461 }
1462 } 1462 }
1463 1463
1464 /** 1464 /**
1465 * Instances of the class `Parser` are used to parse tokens into an AST structur e. 1465 * Instances of the class `Parser` are used to parse tokens into an AST structur e.
1466 */ 1466 */
1467 class Parser { 1467 class Parser {
(...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after
2820 * Append the character equivalent of the given scalar value to the given buil der. Use the start 2820 * Append the character equivalent of the given scalar value to the given buil der. Use the start
2821 * and end indices to report an error, and don't append anything to the builde r, if the scalar 2821 * and end indices to report an error, and don't append anything to the builde r, if the scalar
2822 * value is invalid. 2822 * value is invalid.
2823 * 2823 *
2824 * @param builder the builder to which the scalar value is to be appended 2824 * @param builder the builder to which the scalar value is to be appended
2825 * @param escapeSequence the escape sequence that was parsed to produce the sc alar value 2825 * @param escapeSequence the escape sequence that was parsed to produce the sc alar value
2826 * @param scalarValue the value to be appended 2826 * @param scalarValue the value to be appended
2827 * @param startIndex the index of the first character representing the scalar value 2827 * @param startIndex the index of the first character representing the scalar value
2828 * @param endIndex the index of the last character representing the scalar val ue 2828 * @param endIndex the index of the last character representing the scalar val ue
2829 */ 2829 */
2830 void _appendScalarValue(JavaStringBuilder builder, String escapeSequence, int scalarValue, int startIndex, int endIndex) { 2830 void _appendScalarValue(StringBuffer buffer, String escapeSequence, int scalar Value, int startIndex, int endIndex) {
2831 if (scalarValue < 0 || scalarValue > Character.MAX_CODE_POINT || (scalarValu e >= 0xD800 && scalarValue <= 0xDFFF)) { 2831 if (scalarValue < 0 || scalarValue > Character.MAX_CODE_POINT || (scalarValu e >= 0xD800 && scalarValue <= 0xDFFF)) {
2832 _reportErrorForCurrentToken(ParserErrorCode.INVALID_CODE_POINT, [escapeSeq uence]); 2832 _reportErrorForCurrentToken(ParserErrorCode.INVALID_CODE_POINT, [escapeSeq uence]);
2833 return; 2833 return;
2834 } 2834 }
2835 if (scalarValue < Character.MAX_VALUE) { 2835 if (scalarValue < Character.MAX_VALUE) {
2836 builder.appendChar(scalarValue); 2836 buffer.writeCharCode(scalarValue);
2837 } else { 2837 } else {
2838 builder.append(Character.toChars(scalarValue)); 2838 buffer.write(Character.toChars(scalarValue));
2839 } 2839 }
2840 } 2840 }
2841 2841
2842 /** 2842 /**
2843 * Compute the content of a string with the given literal representation. 2843 * Compute the content of a string with the given literal representation.
2844 * 2844 *
2845 * @param lexeme the literal representation of the string 2845 * @param lexeme the literal representation of the string
2846 * @param first `true` if this is the first token in a string literal 2846 * @param first `true` if this is the first token in a string literal
2847 * @param last `true` if this is the last token in a string literal 2847 * @param last `true` if this is the last token in a string literal
2848 * @return the actual value of the string 2848 * @return the actual value of the string
(...skipping 22 matching lines...) Expand all
2871 end -= 1; 2871 end -= 1;
2872 } 2872 }
2873 } 2873 }
2874 if (end - start + 1 < 0) { 2874 if (end - start + 1 < 0) {
2875 AnalysisEngine.instance.logger.logError("Internal error: computeStringValu e(${lexeme}, ${first}, ${last})"); 2875 AnalysisEngine.instance.logger.logError("Internal error: computeStringValu e(${lexeme}, ${first}, ${last})");
2876 return ""; 2876 return "";
2877 } 2877 }
2878 if (isRaw) { 2878 if (isRaw) {
2879 return lexeme.substring(start, end); 2879 return lexeme.substring(start, end);
2880 } 2880 }
2881 JavaStringBuilder builder = new JavaStringBuilder(); 2881 StringBuffer buffer = new StringBuffer();
2882 int index = start; 2882 int index = start;
2883 while (index < end) { 2883 while (index < end) {
2884 index = _translateCharacter(builder, lexeme, index); 2884 index = _translateCharacter(buffer, lexeme, index);
2885 } 2885 }
2886 return builder.toString(); 2886 return buffer.toString();
2887 } 2887 }
2888 2888
2889 /** 2889 /**
2890 * Convert the given method declaration into the nearest valid top-level funct ion declaration. 2890 * Convert the given method declaration into the nearest valid top-level funct ion declaration.
2891 * 2891 *
2892 * @param method the method to be converted 2892 * @param method the method to be converted
2893 * @return the function declaration that most closely captures the components of the given method 2893 * @return the function declaration that most closely captures the components of the given method
2894 * declaration 2894 * declaration
2895 */ 2895 */
2896 FunctionDeclaration _convertToFunctionDeclaration(MethodDeclaration method) => new FunctionDeclaration(method.documentationComment, method.metadata, method.ex ternalKeyword, method.returnType, method.propertyKeyword, method.name, new Funct ionExpression(method.parameters, method.body)); 2896 FunctionDeclaration _convertToFunctionDeclaration(MethodDeclaration method) => new FunctionDeclaration(method.documentationComment, method.metadata, method.ex ternalKeyword, method.returnType, method.propertyKeyword, method.name, new Funct ionExpression(method.parameters, method.body));
(...skipping 4462 matching lines...) Expand 10 before | Expand all | Expand 10 after
7359 /** 7359 /**
7360 * Return `true` if the given token matches the given identifier. 7360 * Return `true` if the given token matches the given identifier.
7361 * 7361 *
7362 * @param token the token being tested 7362 * @param token the token being tested
7363 * @param identifier the identifier that can optionally appear in the current location 7363 * @param identifier the identifier that can optionally appear in the current location
7364 * @return `true` if the current token matches the given identifier 7364 * @return `true` if the current token matches the given identifier
7365 */ 7365 */
7366 bool _tokenMatchesString(Token token, String identifier) => token.type == Toke nType.IDENTIFIER && token.lexeme == identifier; 7366 bool _tokenMatchesString(Token token, String identifier) => token.type == Toke nType.IDENTIFIER && token.lexeme == identifier;
7367 7367
7368 /** 7368 /**
7369 * Translate the characters at the given index in the given string, appending the translated 7369 * Translate the characters at the given [index] in the given [lexeme],
7370 * character to the given builder. The index is assumed to be valid. 7370 * appending the translated character to the given [buffer]. The index is
7371 * 7371 * assumed to be valid.
7372 * @param builder the builder to which the translated character is to be appen ded
7373 * @param lexeme the string containing the character(s) to be translated
7374 * @param index the index of the character to be translated
7375 * @return the index of the next character to be translated
7376 */ 7372 */
7377 int _translateCharacter(JavaStringBuilder builder, String lexeme, int index) { 7373 int _translateCharacter(StringBuffer buffer, String lexeme, int index) {
7378 int currentChar = lexeme.codeUnitAt(index); 7374 int currentChar = lexeme.codeUnitAt(index);
7379 if (currentChar != 0x5C) { 7375 if (currentChar != 0x5C) {
7380 builder.appendChar(currentChar); 7376 buffer.writeCharCode(currentChar);
7381 return index + 1; 7377 return index + 1;
7382 } 7378 }
7383 // 7379 //
7384 // We have found an escape sequence, so we parse the string to determine wha t kind of escape 7380 // We have found an escape sequence, so we parse the string to determine
7385 // sequence and what character to add to the builder. 7381 // what kind of escape sequence and what character to add to the builder.
7386 // 7382 //
7387 int length = lexeme.length; 7383 int length = lexeme.length;
7388 int currentIndex = index + 1; 7384 int currentIndex = index + 1;
7389 if (currentIndex >= length) { 7385 if (currentIndex >= length) {
7390 // Illegal escape sequence: no char after escape 7386 // Illegal escape sequence: no char after escape.
7391 // This cannot actually happen because it would require the escape charact er to be the last 7387 // This cannot actually happen because it would require the escape
7392 // character in the string, but if it were it would escape the closing quo te, leaving the 7388 // character to be the last character in the string, but if it were it
7393 // string unclosed. 7389 // would escape the closing quote, leaving the string unclosed.
7394 // reportError(ParserErrorCode.MISSING_CHAR_IN_ESCAPE_SEQUENCE); 7390 // reportError(ParserErrorCode.MISSING_CHAR_IN_ESCAPE_SEQUENCE);
7395 return length; 7391 return length;
7396 } 7392 }
7397 currentChar = lexeme.codeUnitAt(currentIndex); 7393 currentChar = lexeme.codeUnitAt(currentIndex);
7398 if (currentChar == 0x6E) { 7394 if (currentChar == 0x6E) {
7399 builder.appendChar(0xA); 7395 buffer.writeCharCode(0xA);
7400 // newline 7396 // newline
7401 } else if (currentChar == 0x72) { 7397 } else if (currentChar == 0x72) {
7402 builder.appendChar(0xD); 7398 buffer.writeCharCode(0xD);
7403 // carriage return 7399 // carriage return
7404 } else if (currentChar == 0x66) { 7400 } else if (currentChar == 0x66) {
7405 builder.appendChar(0xC); 7401 buffer.writeCharCode(0xC);
7406 // form feed 7402 // form feed
7407 } else if (currentChar == 0x62) { 7403 } else if (currentChar == 0x62) {
7408 builder.appendChar(0x8); 7404 buffer.writeCharCode(0x8);
7409 // backspace 7405 // backspace
7410 } else if (currentChar == 0x74) { 7406 } else if (currentChar == 0x74) {
7411 builder.appendChar(0x9); 7407 buffer.writeCharCode(0x9);
7412 // tab 7408 // tab
7413 } else if (currentChar == 0x76) { 7409 } else if (currentChar == 0x76) {
7414 builder.appendChar(0xB); 7410 buffer.writeCharCode(0xB);
7415 // vertical tab 7411 // vertical tab
7416 } else if (currentChar == 0x78) { 7412 } else if (currentChar == 0x78) {
7417 if (currentIndex + 2 >= length) { 7413 if (currentIndex + 2 >= length) {
7418 // Illegal escape sequence: not enough hex digits 7414 // Illegal escape sequence: not enough hex digits
7419 _reportErrorForCurrentToken(ParserErrorCode.INVALID_HEX_ESCAPE, []); 7415 _reportErrorForCurrentToken(ParserErrorCode.INVALID_HEX_ESCAPE, []);
7420 return length; 7416 return length;
7421 } 7417 }
7422 int firstDigit = lexeme.codeUnitAt(currentIndex + 1); 7418 int firstDigit = lexeme.codeUnitAt(currentIndex + 1);
7423 int secondDigit = lexeme.codeUnitAt(currentIndex + 2); 7419 int secondDigit = lexeme.codeUnitAt(currentIndex + 2);
7424 if (!_isHexDigit(firstDigit) || !_isHexDigit(secondDigit)) { 7420 if (!_isHexDigit(firstDigit) || !_isHexDigit(secondDigit)) {
7425 // Illegal escape sequence: invalid hex digit 7421 // Illegal escape sequence: invalid hex digit
7426 _reportErrorForCurrentToken(ParserErrorCode.INVALID_HEX_ESCAPE, []); 7422 _reportErrorForCurrentToken(ParserErrorCode.INVALID_HEX_ESCAPE, []);
7427 } else { 7423 } else {
7428 builder.appendChar(((Character.digit(firstDigit, 16) << 4) + Character.d igit(secondDigit, 16))); 7424 int charCode = (Character.digit(firstDigit, 16) << 4)
7425 + Character.digit(secondDigit, 16);
7426 buffer.writeCharCode(charCode);
7429 } 7427 }
7430 return currentIndex + 3; 7428 return currentIndex + 3;
7431 } else if (currentChar == 0x75) { 7429 } else if (currentChar == 0x75) {
7432 currentIndex++; 7430 currentIndex++;
7433 if (currentIndex >= length) { 7431 if (currentIndex >= length) {
7434 // Illegal escape sequence: not enough hex digits 7432 // Illegal escape sequence: not enough hex digits
7435 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); 7433 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []);
7436 return length; 7434 return length;
7437 } 7435 }
7438 currentChar = lexeme.codeUnitAt(currentIndex); 7436 currentChar = lexeme.codeUnitAt(currentIndex);
7439 if (currentChar == 0x7B) { 7437 if (currentChar == 0x7B) {
7440 currentIndex++; 7438 currentIndex++;
7441 if (currentIndex >= length) { 7439 if (currentIndex >= length) {
7442 // Illegal escape sequence: incomplete escape 7440 // Illegal escape sequence: incomplete escape
7443 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, [] ); 7441 _reportErrorForCurrentToken(
7442 ParserErrorCode.INVALID_UNICODE_ESCAPE,
7443 []);
7444 return length; 7444 return length;
7445 } 7445 }
7446 currentChar = lexeme.codeUnitAt(currentIndex); 7446 currentChar = lexeme.codeUnitAt(currentIndex);
7447 int digitCount = 0; 7447 int digitCount = 0;
7448 int value = 0; 7448 int value = 0;
7449 while (currentChar != 0x7D) { 7449 while (currentChar != 0x7D) {
7450 if (!_isHexDigit(currentChar)) { 7450 if (!_isHexDigit(currentChar)) {
7451 // Illegal escape sequence: invalid hex digit 7451 // Illegal escape sequence: invalid hex digit
7452 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); 7452 _reportErrorForCurrentToken(
7453 ParserErrorCode.INVALID_UNICODE_ESCAPE,
7454 []);
7453 currentIndex++; 7455 currentIndex++;
7454 while (currentIndex < length && lexeme.codeUnitAt(currentIndex) != 0 x7D) { 7456 while (currentIndex < length
7457 && lexeme.codeUnitAt(currentIndex) != 0x7D) {
7455 currentIndex++; 7458 currentIndex++;
7456 } 7459 }
7457 return currentIndex + 1; 7460 return currentIndex + 1;
7458 } 7461 }
7459 digitCount++; 7462 digitCount++;
7460 value = (value << 4) + Character.digit(currentChar, 16); 7463 value = (value << 4) + Character.digit(currentChar, 16);
7461 currentIndex++; 7464 currentIndex++;
7462 if (currentIndex >= length) { 7465 if (currentIndex >= length) {
7463 // Illegal escape sequence: incomplete escape 7466 // Illegal escape sequence: incomplete escape
7464 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); 7467 _reportErrorForCurrentToken(
7468 ParserErrorCode.INVALID_UNICODE_ESCAPE,
7469 []);
7465 return length; 7470 return length;
7466 } 7471 }
7467 currentChar = lexeme.codeUnitAt(currentIndex); 7472 currentChar = lexeme.codeUnitAt(currentIndex);
7468 } 7473 }
7469 if (digitCount < 1 || digitCount > 6) { 7474 if (digitCount < 1 || digitCount > 6) {
7470 // Illegal escape sequence: not enough or too many hex digits 7475 // Illegal escape sequence: not enough or too many hex digits
7471 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, [] ); 7476 _reportErrorForCurrentToken(
7477 ParserErrorCode.INVALID_UNICODE_ESCAPE,
7478 []);
7472 } 7479 }
7473 _appendScalarValue(builder, lexeme.substring(index, currentIndex + 1), v alue, index, currentIndex); 7480 _appendScalarValue(
7481 buffer,
7482 lexeme.substring(index, currentIndex + 1),
7483 value,
7484 index,
7485 currentIndex);
7474 return currentIndex + 1; 7486 return currentIndex + 1;
7475 } else { 7487 } else {
7476 if (currentIndex + 3 >= length) { 7488 if (currentIndex + 3 >= length) {
7477 // Illegal escape sequence: not enough hex digits 7489 // Illegal escape sequence: not enough hex digits
7478 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, [] ); 7490 _reportErrorForCurrentToken(
7491 ParserErrorCode.INVALID_UNICODE_ESCAPE,
7492 []);
7479 return length; 7493 return length;
7480 } 7494 }
7481 int firstDigit = currentChar; 7495 int firstDigit = currentChar;
7482 int secondDigit = lexeme.codeUnitAt(currentIndex + 1); 7496 int secondDigit = lexeme.codeUnitAt(currentIndex + 1);
7483 int thirdDigit = lexeme.codeUnitAt(currentIndex + 2); 7497 int thirdDigit = lexeme.codeUnitAt(currentIndex + 2);
7484 int fourthDigit = lexeme.codeUnitAt(currentIndex + 3); 7498 int fourthDigit = lexeme.codeUnitAt(currentIndex + 3);
7485 if (!_isHexDigit(firstDigit) || !_isHexDigit(secondDigit) || !_isHexDigi t(thirdDigit) || !_isHexDigit(fourthDigit)) { 7499 if (!_isHexDigit(firstDigit)
7500 || !_isHexDigit(secondDigit)
7501 || !_isHexDigit(thirdDigit)
7502 || !_isHexDigit(fourthDigit)) {
7486 // Illegal escape sequence: invalid hex digits 7503 // Illegal escape sequence: invalid hex digits
7487 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, [] ); 7504 _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, [] );
7488 } else { 7505 } else {
7489 _appendScalarValue(builder, lexeme.substring(index, currentIndex + 1), (((((Character.digit(firstDigit, 16) << 4) + Character.digit(secondDigit, 16)) << 4) + Character.digit(thirdDigit, 16)) << 4) + Character.digit(fourthDigit, 16 ), index, currentIndex + 3); 7506 _appendScalarValue(
7507 buffer,
7508 lexeme.substring(index, currentIndex + 1),
7509 (((((Character.digit(firstDigit, 16) << 4)
7510 + Character.digit(secondDigit, 16)) << 4)
7511 + Character.digit(thirdDigit, 16)) << 4)
7512 + Character.digit(fourthDigit, 16),
7513 index,
7514 currentIndex + 3);
7490 } 7515 }
7491 return currentIndex + 4; 7516 return currentIndex + 4;
7492 } 7517 }
7493 } else { 7518 } else {
7494 builder.appendChar(currentChar); 7519 buffer.writeCharCode(currentChar);
7495 } 7520 }
7496 return currentIndex + 1; 7521 return currentIndex + 1;
7497 } 7522 }
7498 7523
7499 /** 7524 /**
7500 * Decrements the error reporting lock level. If level is more than `0`, then 7525 * Decrements the error reporting lock level. If level is more than `0`, then
7501 * [reportError] wont report any error. 7526 * [reportError] wont report any error.
7502 */ 7527 */
7503 void _unlockErrorListener() { 7528 void _unlockErrorListener() {
7504 if (_errorListenerLock == 0) { 7529 if (_errorListenerLock == 0) {
(...skipping 2021 matching lines...) Expand 10 before | Expand all | Expand 10 after
9526 return trampoline(target, arguments[0], arguments[1]); 9551 return trampoline(target, arguments[0], arguments[1]);
9527 case 3: 9552 case 3:
9528 return trampoline(target, arguments[0], arguments[1], arguments[2]); 9553 return trampoline(target, arguments[0], arguments[1], arguments[2]);
9529 case 4: 9554 case 4:
9530 return trampoline(target, arguments[0], arguments[1], arguments[2], argu ments[3]); 9555 return trampoline(target, arguments[0], arguments[1], arguments[2], argu ments[3]);
9531 default: 9556 default:
9532 throw new IllegalArgumentException("Not implemented for > 4 arguments"); 9557 throw new IllegalArgumentException("Not implemented for > 4 arguments");
9533 } 9558 }
9534 } 9559 }
9535 } 9560 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698