X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java index 2cb48e4..d82979c 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java @@ -428,8 +428,13 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI if (branchStatement && statement != null) { // reportSyntaxError("Unreachable code", statement.sourceStart, // statement.sourceEnd); - problemReporter.unreachableCode(new String(scanner.getCurrentIdentifierSource()), statement.sourceStart, + if (! (statement instanceof BreakStatement)) { + /* don't give an error for break statement following return statement + Technically it's unreachable code, but in switch-case it's recommended to + avoid accidental fall-through later when editing the code */ + problemReporter.unreachableCode(new String(scanner.getCurrentIdentifierSource()), statement.sourceStart, statement.sourceEnd, referenceContext, compilationUnit.compilationResult); + } } if ((token == TokenNameRBRACE) || (token == TokenNamecase) || (token == TokenNamedefault) || (token == TokenNameelse) || (token == TokenNameelseif) || (token == TokenNameendif) || (token == TokenNameendfor) @@ -2527,7 +2532,7 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI FieldReference ref = (FieldReference) lhs; if (!containsVariableSet(ref.token)) { if (null==initHandler || initHandler.reportError()) { - problemReporter.uninitializedLocalVariable(new String(ref.token), ref.sourceStart(), ref.sourceEnd(), + problemReporter.uninitializedLocalVariable(new String(ref.token), ref.sourceStart, ref.sourceEnd, referenceContext, compilationUnit.compilationResult); } addVariableSet(ref.token); @@ -2553,7 +2558,7 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI // example: // $var = & new Object(); if (fMethodVariables != null) { - VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart()); + VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart); lhsInfo.reference = classRef; lhsInfo.typeIdentifier = classRef.token; fMethodVariables.put(new String(((FieldReference) lhs).token), lhsInfo); @@ -2569,7 +2574,7 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI if (fMethodVariables != null) { VariableInfo rhsInfo = (VariableInfo) fMethodVariables.get(((FieldReference) rhs).token); if (rhsInfo != null && rhsInfo.reference != null) { - VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart()); + VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart); lhsInfo.reference = rhsInfo.reference; lhsInfo.typeIdentifier = rhsInfo.typeIdentifier; fMethodVariables.put(new String(((FieldReference) lhs).token), lhsInfo); @@ -2587,7 +2592,7 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI if (fMethodVariables != null) { VariableInfo rhsInfo = (VariableInfo) fMethodVariables.get(((FieldReference) rhs).token); if (rhsInfo != null && rhsInfo.reference != null) { - VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart()); + VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart); lhsInfo.reference = rhsInfo.reference; lhsInfo.typeIdentifier = rhsInfo.typeIdentifier; fMethodVariables.put(new String(((FieldReference) lhs).token), lhsInfo); @@ -2598,7 +2603,7 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI // example: // $var = new Object(); if (fMethodVariables != null) { - VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart()); + VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart); lhsInfo.reference = (SingleTypeReference) rhs; lhsInfo.typeIdentifier = ((SingleTypeReference) rhs).token; fMethodVariables.put(new String(((FieldReference) lhs).token), lhsInfo); @@ -2609,7 +2614,7 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI } if (rememberedVar == false && lhs != null && lhs instanceof FieldReference) { if (fMethodVariables != null) { - VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart()); + VariableInfo lhsInfo = new VariableInfo(((FieldReference) lhs).sourceStart); fMethodVariables.put(new String(((FieldReference) lhs).token), lhsInfo); } }