diff options
author | Gorkem Ercan | 2016-08-24 15:49:19 +0000 |
---|---|---|
committer | Ilya Buziuk | 2016-08-25 10:59:21 +0000 |
commit | 4cbd8b6372bbf1ddf740e5364d51d63fb1ef2c49 (patch) | |
tree | 5decde165cde554f665c0c34cdf2d1677d90c063 | |
parent | d1cf6821fb18fd72631c99d1880a676bf722ab3d (diff) | |
download | webtools.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>
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(); |