sh: Further specialize in parser.
Prevents useless casts.
Change-Id: I8c693e24a01dd9a65de18766daed3ded1d8bc8ad
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java b/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java
index 9fbb004..1f36fc3 100644
--- a/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java
+++ b/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java
@@ -19,7 +19,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.eclipse.dltk.ast.declarations.Declaration;
import org.eclipse.dltk.ast.declarations.FieldDeclaration;
import org.eclipse.dltk.ast.declarations.MethodDeclaration;
import org.eclipse.dltk.ast.declarations.ModuleDeclaration;
@@ -41,7 +40,7 @@
Set<String> functionNames = new HashSet<>();
Set<String> varNames = new HashSet<>();
MethodDeclaration mDeclaration = null;
- Stack<Declaration> tmp = new Stack<>();
+ Stack<MethodDeclaration> tmp = new Stack<>();
boolean isPrevLnContinued = false;
try (BufferedReader bReader = new BufferedReader(reader)) {
@@ -77,7 +76,7 @@
tmp.push(mDeclaration);
model.addFunction(mDeclaration);
} else if (line.trim().equals("}") && mDeclaration != null && !tmp.isEmpty()) {
- mDeclaration = (MethodDeclaration) tmp.pop();
+ mDeclaration = tmp.pop();
mDeclaration.setEnd(lineStart + line.length());
}
Pattern assignmentPattern = Pattern.compile("(^|\\W)\\w*=");
@@ -103,7 +102,7 @@
// end of if statement
} else if (line.trim().equals("fi")) {
if (!tmp.isEmpty()) {
- mDeclaration = (MethodDeclaration) tmp.pop();
+ mDeclaration = tmp.pop();
mDeclaration.setEnd(lineStart + line.indexOf("fi"));
}
@@ -126,7 +125,7 @@
// done statement encountered
} else if (line.contains("done ") || line.trim().equals("done")) {
if (!tmp.isEmpty()) {
- mDeclaration = (MethodDeclaration) tmp.pop();
+ mDeclaration = tmp.pop();
mDeclaration.setEnd(lineStart + line.indexOf("done"));
}
@@ -149,7 +148,7 @@
// end of case statement
} else if (line.trim().equals("esac")) {
if (!tmp.isEmpty()) {
- mDeclaration = (MethodDeclaration) tmp.pop();
+ mDeclaration = tmp.pop();
mDeclaration.setEnd(lineStart + line.indexOf("esac"));
}
}
@@ -164,14 +163,14 @@
model.addStatement(mDeclaration);
} else if (line.charAt(line.length() - 1) == '\\' && isPrevLnContinued) {
if (!tmp.isEmpty()) {
- mDeclaration = (MethodDeclaration) tmp.pop();
+ mDeclaration = tmp.pop();
mDeclaration.setEnd(lineStart + line.indexOf('\\'));
tmp.push(mDeclaration);
}
} else if (isPrevLnContinued) {
isPrevLnContinued = false;
if (!tmp.isEmpty()) {
- mDeclaration = (MethodDeclaration) tmp.pop();
+ mDeclaration = tmp.pop();
mDeclaration.setEnd(lineStart + line.length() - 2);
}
}