Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGorkem Ercan2016-08-24 15:49:19 +0000
committerIlya Buziuk2016-08-25 10:59:21 +0000
commit4cbd8b6372bbf1ddf740e5364d51d63fb1ef2c49 (patch)
tree5decde165cde554f665c0c34cdf2d1677d90c063
parentd1cf6821fb18fd72631c99d1880a676bf722ab3d (diff)
downloadwebtools.jsdt-4cbd8b6372bbf1ddf740e5364d51d63fb1ef2c49.tar.gz
webtools.jsdt-4cbd8b6372bbf1ddf740e5364d51d63fb1ef2c49.tar.xz
webtools.jsdt-4cbd8b6372bbf1ddf740e5364d51d63fb1ef2c49.zip
[bug 496348]- Eclipse neon, javascript 'export' generates a 'Unexpected token'
Adds reading of the sourceType preference to additional execution paths that were missing it. Also updates the EsprimaParser to tolerate missing sourceType option better. Change-Id: I4c9f902b0b5aeabe8bcafe69174c6a575f2ff16f Signed-off-by: Gorkem Ercan <gorkem.ercan@gmail.com>
-rw-r--r--bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/ASTParser.java18
-rw-r--r--bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/JavaScriptUnitResolver.java5
-rw-r--r--bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/esprima/EsprimaParser.java3
-rw-r--r--bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/validation/JSDTSourceValidator.java2
4 files changed, 23 insertions, 5 deletions
diff --git a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/ASTParser.java b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/ASTParser.java
index d279b3238..8621e7c00 100644
--- a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/ASTParser.java
+++ b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/ASTParser.java
@@ -851,7 +851,11 @@ public class ASTParser {
* (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=75632)
*/
// sourceUnit = new BasicCompilationUnit(sourceUnit.getContents(), sourceUnit.getPackageName(), new String(sourceUnit.getFileName()), this.project);
- JavaScriptUnit result = EsprimaParser.newParser().includeComments().setSource((IJavaScriptUnit) this.typeRoot).parse();
+ JavaScriptUnit result = EsprimaParser.newParser()
+ .includeComments()
+ .setSourceType(project.getOption(JavaScriptCore.COMPILER_SOURCE_TYPE, true))
+ .setSource((IJavaScriptUnit) this.typeRoot)
+ .parse();
result.setTypeRoot(this.typeRoot);
result.ast.setOriginalModificationCount(result.ast.modificationCount());
try {
@@ -895,7 +899,11 @@ public class ASTParser {
} else {
throw new IllegalStateException();
}
- JavaScriptUnit $ = EsprimaParser.newParser().setSource(String.valueOf(sourceUnit.getContents())).parse();
+ String sourceType = project != null ? project.getOption(JavaScriptCore.COMPILER_SOURCE_TYPE, true): null;
+ JavaScriptUnit $ = EsprimaParser.newParser()
+ .setSourceType(sourceType)
+ .setSource(String.valueOf(sourceUnit.getContents()))
+ .parse();
$.setTypeRoot(this.typeRoot);
$.ast.setOriginalModificationCount($.ast.modificationCount());
scanner.setSource(sourceUnit.getContents());
@@ -989,7 +997,11 @@ public class ASTParser {
this.sourceLength = this.rawSource.length;
char[] contentArray = new char[this.sourceLength];
System.arraycopy(this.rawSource,this.sourceOffset,contentArray,0,this.sourceLength );
- JavaScriptUnit unit = EsprimaParser.newParser().includeComments().setSource(String.valueOf(contentArray)).parse();
+ JavaScriptUnit unit = EsprimaParser.newParser()
+ .includeComments()
+ .setSourceType(project.getOption(JavaScriptCore.COMPILER_SOURCE_TYPE, true))
+ .setSource(String.valueOf(contentArray))
+ .parse();
unit.ast.setOriginalModificationCount(unit.ast.modificationCount());
final Scanner scanner = new Scanner(
true /*comment*/,
diff --git a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/JavaScriptUnitResolver.java b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/JavaScriptUnitResolver.java
index 3d119cada..a165f3714 100644
--- a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/JavaScriptUnitResolver.java
+++ b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/core/dom/JavaScriptUnitResolver.java
@@ -18,6 +18,7 @@ import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.wst.jsdt.core.IJavaScriptUnit;
+import org.eclipse.wst.jsdt.core.JavaScriptCore;
import org.eclipse.wst.jsdt.core.IJavaScriptElement;
import org.eclipse.wst.jsdt.core.IJavaScriptProject;
import org.eclipse.wst.jsdt.core.JavaScriptModelException;
@@ -373,7 +374,9 @@ class JavaScriptUnitResolver extends Compiler {
// convert AST
// JavaScriptUnit node = convert(compilationUnitDeclaration, parser.scanner.getSource(), apiLevel, options, false/*don't resolve binding*/, null/*no owner needed*/, null/*no binding table needed*/, flags /* flags */, monitor);
- JavaScriptUnit node = EsprimaParser.newParser().setSource(compilationUnits[i]).parse();
+ JavaScriptUnit node = EsprimaParser.newParser()
+ .setSourceType(compilationUnits[i].getJavaScriptProject().getOption(JavaScriptCore.COMPILER_SOURCE_TYPE, true))
+ .setSource(compilationUnits[i]).parse();
node.setTypeRoot(compilationUnits[i]);
// accept AST
diff --git a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/esprima/EsprimaParser.java b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/esprima/EsprimaParser.java
index ee8b67d9b..39c77c8d4 100644
--- a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/esprima/EsprimaParser.java
+++ b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/esprima/EsprimaParser.java
@@ -216,7 +216,8 @@ public class EsprimaParser {
$.put(ESPRIMA_OPT_RANGE, range);
$.put(ESPRIMA_OPT_TOLERANT, tolerant);
$.put(ESPRIMA_OPT_ATTACH_COMMENT, includeJsdocs);
- $.put(ESPRIMA_OPT_SOURCE_TYPE, sourceType);
+ if(sourceType != null)
+ $.put(ESPRIMA_OPT_SOURCE_TYPE, sourceType);
return $;
}
diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/validation/JSDTSourceValidator.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/validation/JSDTSourceValidator.java
index 7495366f7..8416440ff 100644
--- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/validation/JSDTSourceValidator.java
+++ b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/validation/JSDTSourceValidator.java
@@ -29,6 +29,7 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Position;
+import org.eclipse.wst.jsdt.core.JavaScriptCore;
import org.eclipse.wst.jsdt.core.compiler.CategorizedProblem;
import org.eclipse.wst.jsdt.core.dom.AST;
import org.eclipse.wst.jsdt.core.dom.ASTParser;
@@ -212,6 +213,7 @@ public class JSDTSourceValidator extends AbstractValidator implements IValidator
}
parser.setSource(source);
+ parser.setProject(JavaScriptCore.create(file.getProject()));
JavaScriptUnit unit = (JavaScriptUnit) parser.createAST(new NullProgressMonitor());
if(unit.getProblems().length > 0){
CategorizedProblem[] resourceProblems = (CategorizedProblem[]) unit.getProblems();

Back to the top