Skip to content

IllegalArgumentException caused by invalid directive #712

@bwilkerson

Description

@bwilkerson

Compiling the following source


import('dart:html');

import('file:');

class hello {

  hello() {
  }

  void run() {
    write("Hello World!");
  }

  void write(String message) {
    // the HTML library defines a global "document" variable
    document.query('#status').innerHTML = message;
  }
}

void main() {
  new hello().run();
}


produces the following stack trace:


!SUBENTRY 1 com.google.dart.tools.core 4 0 2011-12-06 14:05:48.331
!MESSAGE Failed to parse file:/Users/brianwilkerson/dart/hello/hello.dart
!STACK 0
java.lang.IllegalArgumentException
    at java.net.URI.create(URI.java:842)
    at java.net.URI.resolve(URI.java:1028)
    at com.google.dart.compiler.UrlLibrarySource.getImportFor(UrlLibrarySource.java:46)
    at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities$LibraryWithSuppliedSources.getImportFor(DartCompilerUtilities.java:293)
    at com.google.dart.compiler.DartCompiler$Compiler.updateLibraries(DartCompiler.java:359)
    at com.google.dart.compiler.DartCompiler$Compiler.updateAndResolve(DartCompiler.java:202)
    at com.google.dart.compiler.DartCompiler$Compiler.access$4(DartCompiler.java:193)
    at com.google.dart.compiler.DartCompiler.analyzeLibrary(DartCompiler.java:1184)
    at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.secureAnalyzeLibrary(DartCompilerUtilities.java:770)
    at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities$ResolverRunnable.run(DartCompilerUtilities.java:433)
    at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities$CompilerRunner.runSafe(DartCompilerUtilities.java:93)
    at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.resolveUnit(DartCompilerUtilities.java:753)
    at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.resolveUnit(DartCompilerUtilities.java:735)
    at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.resolveUnit(DartCompilerUtilities.java:699)
    at com.google.dart.tools.ui.internal.text.editor.DartEditor.getAST(DartEditor.java:2010)
    at com.google.dart.tools.ui.internal.text.editor.DartElementHyperlinkDetector.internalDetectHyperlinks(DartElementHyperlinkDetector.java:76)
    at com.google.dart.tools.ui.internal.text.editor.DartElementHyperlinkDetector.detectHyperlinks(DartElementHyperlinkDetector.java:47)
    at org.eclipse.ui.texteditor.HyperlinkDetectorRegistry$HyperlinkDetectorDelegate.detectHyperlinks(HyperlinkDetectorRegistry.java:80)
    at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:286)
    at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:258)
    at org.eclipse.jface.text.hyperlink.HyperlinkManager.mouseMove(HyperlinkManager.java:462)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:211)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4125)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1270)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3971)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3610)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at com.google.dart.tools.deploy.DartIDEApplication.start(DartIDEApplication.java:44)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: java.net.URISyntaxException: Expected scheme-specific part at index 5: file:
    at java.net.URI$Parser.fail(URI.java:2809)
    at java.net.URI$Parser.failExpecting(URI.java:2815)
    at java.net.URI$Parser.parse(URI.java:3018)
    at java.net.URI.<init>(URI.java:578)
    at java.net.URI.create(URI.java:840)
    ... 50 more


While the code is clearly illegal, we need to gracefully handle this kind of error. This is likely a problem with other kinds of directives as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions