X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java index 516c7de..3d70337 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java @@ -23,7 +23,6 @@ import net.sourceforge.phpdt.core.compiler.ITerminalSymbols; import net.sourceforge.phpdt.core.compiler.InvalidInputException; import net.sourceforge.phpdt.internal.compiler.ConfigurableOption; import net.sourceforge.phpdt.internal.compiler.parser.Scanner; - import net.sourceforge.phpdt.internal.formatter.impl.FormatterOptions; import net.sourceforge.phpdt.internal.formatter.impl.SplitLine; @@ -315,6 +314,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { boolean inArrayAssignment = false; boolean inThrowsClause = false; boolean inClassOrInterfaceHeader = false; + int dollarBraceCount = 0; // openBracketCount is used to count the number of open brackets not closed yet. int openBracketCount = 0; @@ -349,6 +349,13 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { // exit the loop. try { token = scanner.getNextToken(); + if (Scanner.DEBUG) { + int currentEndPosition = scanner.getCurrentTokenEndPosition(); + int currentStartPosition = scanner.getCurrentTokenStartPosition(); + + System.out.print(currentStartPosition + "," + currentEndPosition + ": "); + System.out.println(scanner.toStringAction(token)); + } // Patch for line comment // See PR http://dev.eclipse.org/bugs/show_bug.cgi?id=23096 @@ -600,6 +607,9 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { } } switch (token) { + case TokenNameDOLLAR_LBRACE : + dollarBraceCount++; + break; case TokenNameelse : // case TokenNamefinally : expectingOpenBrace = true; @@ -723,6 +733,10 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { } break; case TokenNameRBRACE : + if (dollarBraceCount > 0) { + dollarBraceCount--; + break; + } if (previousCompilableToken == TokenNameRPAREN) { pendingSpace = false; } @@ -856,17 +870,17 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { } increaseLineDelta(scanner.startPosition - scanner.currentPosition); break; -// case TokenNameHTML : -// // Add the next token to the formatted source string. -// // outputCurrentToken(token); -// int startPosition = scanner.startPosition; -// flushBuffer(); -// for (int i = startPosition, max = scanner.currentPosition; i < max; i++) { -// char currentCharacter = scanner.source[i]; -// updateMappedPositions(i); -// currentLineBuffer.append(currentCharacter); -// } -// break; + // case TokenNameHTML : + // // Add the next token to the formatted source string. + // // outputCurrentToken(token); + // int startPosition = scanner.startPosition; + // flushBuffer(); + // for (int i = startPosition, max = scanner.currentPosition; i < max; i++) { + // char currentCharacter = scanner.source[i]; + // updateMappedPositions(i); + // currentLineBuffer.append(currentCharacter); + // } + // break; default : if ((token == TokenNameIdentifier) || isLiteralToken(token)) { // || token == TokenNamesuper @@ -1111,7 +1125,9 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { case TokenNameCOLON : // : return 50; // it's better cutting on ?: than on ; case TokenNameEQUAL_EQUAL : // == + case TokenNameEQUAL_EQUAL_EQUAL : // === case TokenNameNOT_EQUAL : // != + case TokenNameNOT_EQUAL_EQUAL : // != return 60; case TokenNameLESS : // < case TokenNameLESS_EQUAL : // <= @@ -1293,12 +1309,24 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { case TokenNameCOLON : // : (15.24) return ":"; //$NON-NLS-1$ + case TokenNameCOLON_COLON : // : (15.24) + return "::"; //$NON-NLS-1$ + case TokenNameEQUAL_EQUAL : // == (15.20, 15.20.1, 15.20.2, 15.20.3) return "=="; //$NON-NLS-1$ + case TokenNameEQUAL_EQUAL_EQUAL : // == (15.20, 15.20.1, 15.20.2, 15.20.3) + return "==="; //$NON-NLS-1$ + + case TokenNameEQUAL_GREATER : // -= (15.25.2) + return "=>"; //$NON-NLS-1$ + case TokenNameNOT_EQUAL : // != (15.20, 15.20.1, 15.20.2, 15.20.3) return "!="; //$NON-NLS-1$ + case TokenNameNOT_EQUAL_EQUAL : // != (15.20, 15.20.1, 15.20.2, 15.20.3) + return "!=="; //$NON-NLS-1$ + case TokenNameLESS : // < (15.19.1) return "<"; //$NON-NLS-1$ @@ -1362,6 +1390,9 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { case TokenNameMINUS_EQUAL : // -= (15.25.2) return "-="; //$NON-NLS-1$ + case TokenNameMINUS_GREATER : // -= (15.25.2) + return "->"; //$NON-NLS-1$ + case TokenNameLEFT_SHIFT_EQUAL : // <<= (15.25.2) return "<<="; //$NON-NLS-1$ @@ -1973,6 +2004,13 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { if (currentToken != Scanner.TokenNameWHITESPACE) previousToken = currentToken; currentToken = splitScanner.getNextToken(); + if (Scanner.DEBUG) { + int currentEndPosition = splitScanner.getCurrentTokenEndPosition(); + int currentStartPosition = splitScanner.getCurrentTokenStartPosition(); + + System.out.print(currentStartPosition + "," + currentEndPosition + ": "); + System.out.println(scanner.toStringAction(currentToken)); + } } catch (InvalidInputException e) { if (!handleInvalidToken(e)) throw e; @@ -2122,7 +2160,9 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter { case TokenNameGREATER_EQUAL : // >= (15.19.1) // case TokenNameinstanceof : // instanceof case TokenNameEQUAL_EQUAL : // == (15.20, 15.20.1, 15.20.2, 15.20.3) + case TokenNameEQUAL_EQUAL_EQUAL : // == (15.20, 15.20.1, 15.20.2, 15.20.3) case TokenNameNOT_EQUAL : // != (15.20, 15.20.1, 15.20.2, 15.20.3) + case TokenNameNOT_EQUAL_EQUAL : // != (15.20, 15.20.1, 15.20.2, 15.20.3) case TokenNameAND : // & (15.21, 15.21.1, 15.21.2) case TokenNameOR : // | (15.21, 15.21.1, 15.21.2) case TokenNameXOR : // ^ (15.21, 15.21.1, 15.21.2)