Git Product home page Git Product logo

gosu-lang's Introduction

The Gosu Language

Gosu is a pragmatic programming language for the JVM. It has been designed with Java developers in mind by providing a set of features that allow them to be more productive without sacrificing the benefits of Java's simple syntax and type-safety. Gosu is an object oriented language with a sprinkle of functional programming features.

Gosu features:

  • Open Type System
  • Advanced type inference
  • Program files (scripts containing statements, functions, and classes at the same level)
  • Structural typing (similar TypeScript's interfaces)
  • Extension methods (aka enhancements)
  • Java interoperability
  • Lambda expressions
  • Classes/Interfaces/Enums
  • Generics (reified, covariant type parameters and no wildcards)
  • Composition (with the delegate keyword)
  • Properties
  • Null Safety (supports operator ?. etc.)
  • Named Arguments and Default Parameter Values
  • A powerful for each statement with user-defined intervals types
  • Member Literals
  • Object Initializers
  • Classpath Statement and Shebang (useful when you use Gosu as a scripting language)
  • ...and more

Build instructions

You need Java JDK 1.8 and Maven 3.x to build Gosu. Set the JAVA_HOME environment variable to JDK 1.8's home.

Clone the project from GitHub and run:

mvn compile

To execute tests:

mvn test

To change the version number:

mvn -B release:update-versions -DdevelopmentVersion=1-someValue-SNAPSHOT

Quickstart

  • Download the latest Gosu distribution here.
  • Set the JAVA_HOME environment variable to JDK 1.8's home, if needed.
  • Unzip the distribution zip, go to the bin folder and double click on gosu.cmd (or gosu if you are using Linux/Mac).

Support

Need help getting your project off the ground? Want to discuss features in the next release, among both users and the Gosu team? Participate in our discussion forum or report a bug:

License

Gosu is released under version 2.0 of the Apache License.

Enjoy!

gosu-lang's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gosu-lang's Issues

error when trying to open editor in latest distribution( i am using linux mint 17 and java 8)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at editor.tabpane.ContentContainer$ContentInnerBorder.initInsets(ContentContainer.java:109)
at editor.tabpane.ContentContainer$ContentInnerBorder.getBorderInsets(ContentContainer.java:105)
at javax.swing.JComponent.setBorder(JComponent.java:1799)
at editor.tabpane.ContentContainer.configUi(ContentContainer.java:23)
at editor.tabpane.ContentContainer.(ContentContainer.java:19)
at editor.tabpane.TabPane.configUi(TabPane.java:283)
at editor.tabpane.TabPane.(TabPane.java:91)
at editor.tabpane.TabPane.(TabPane.java:80)
at editor.GosuPanel.configUI(GosuPanel.java:121)
at editor.GosuPanel.(GosuPanel.java:108)
at editor.BasicGosuEditor.configUI(BasicGosuEditor.java:89)
at editor.BasicGosuEditor.(BasicGosuEditor.java:26)
at editor.BasicGosuEditor.create(BasicGosuEditor.java:175)
at editor.RunMe.lambda$launchEditor$0(RunMe.java:45)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Failing to parse 3rd party libs when classpath contained in a jar manifest

For very large projects with hundreds of dependencies, simply listing these dependencies on the java invocation's -classpath argument would quickly exceed environmental limitations on the length of commands. In these cases, a special jar can be constructed. The jar is empty except for the manifest file, and the manifest contains a Class-Path: entry containing files and directories to add to the classpath.

It appears that the TypeSystem is not leveraging this information when resolving the namespaces of external libraries.

More info: https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

Equality and Identity operators do not show error if the second operand is missing

//No space after == or ===
var equality = 42 ==
var identity = "hello" ===

No error shown here if there is more code below this line. If you delete everything after this expression, the error shows sometimes. or if there is space after the operators, error show up

Note: The file name shows error in the tab and there are red markings on the right scroll bar but the parser does not show any error in the editor

Multi-line comment block completion is incorrectly formatted

If you type /** in a .gs file the auto-complete function incorrectly formats the rest of the comment block. Instead of:

/**
 *
 */

you get:

/**
*
 */

or

/**
 *
**/

Additionally the cursor is positioned before the asterisk on the second line instead of after it.

Wsdl2Gosu.fetch(URL, FILE) throws exceptions

Wsdl2Gosu - Converting RPC style to Document style if necessary
Wsdl2Gosu - Done fetching schemas
Wsdl2Gosu - Writing results to .\src\main\resources\gw\ph\server
Wsdl2Gosu - Done writing results
gw.internal.gosu.parser.TypeRefException: Type interface changed. Expected gw.internal.gosu.parser.IGosuClassInternal for main.java.gw.ph.FetchWsdls
at gw.internal.gosu.parser.GosuProgram_Proxy.getReturnType(gw.internal.gosu.parser.GosuProgram_Proxy:1)
at gw.lang.parser.ParseResult.getType(ParseResult.java:99)
at gw.lang.Gosu$ExecuteMode.runWithFile(Gosu.java:769)
at gw.lang.Gosu$ExecuteMode.run(Gosu.java:723)
at gw.lang.Gosu.start(Gosu.java:123)
at gw.lang.Gosu.main(Gosu.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.ClassCastException: gw.internal.gosu.parser.JavaType cannot be cast to gw.lang.reflect.gs.IGosuProgram
... 11 more

Run All Tests doesn't

Selecting the Run All Tests pop up menu item does not run any tests when using the JUnit 4 @test annotation. It works fine if you extend from TestCase and name methods testXXX().

Unsupported major.minor version 51.0

Hello community

I am running IntelliJ 12.6 (incl. Gosu plugin), Gosu 1.2, Java 1.6 and when I am running a Gosu programm (*.gsp) I am getting the following exception.

Exception in thread "main" java.lang.UnsupportedClassVersionError: gw/lang/Gosu : Unsupported major.minor version 51.0

Does somebody have an idea what I am doing wrong?

IntelliJ IDEA Plugin Breaks Java-Only Projects

First, let me thank everyone for their hard work on Gosu. I love it that I can call a Gosu class from Java in a rather painless way. Excellent! Now on the problem I've noticed:

With the plugin installed, I cannot compile a hello world java project--that makes no use of Gosu--without specifying Gosu libraries. I see the following somewhat-confusing error on a "hello world' Java project:

Error:Cannot find a suitable Gosu Compiler in the project. Make sure one of the following is true:
 * Gosu SDK is set for the project
 * Gosu jars are available in some module's classpath
 * SDK is specified in the Gosu compiler settings

If I disable or uninstall the Gosu plugin, the project works fine. Alternatively, if I make a library with gosu the Gosu 1.8.1 jars and add the library to the project, the project compiles and runs fine--although it now has a dependency on Gosu libraries it should not require.

Environment details:
intellij idea: idea-IC-141.1432.4, idea-IU-141.1432.4, and idea-IC-141.1432.4.
jdk: jdk1.8.0_51.
OS: Linux Mint 17.2

I'd like to be able to be able to use the same instance of IDEA to use both Gosu and non-Gosu related projects, without having to modify the project structure of the non-Gosu projects. Is this possible?

Also, I do not see any place to add/set a Gosu JDK, unlike with prior versions of the plugin. Nor do I see any place in settings for Gosu compiler settings, although I do see compiler settings for other languages. This is why I suggested that the error message was confusing.

Thanks

Can't build gosu-lang

git clone https://github.com/gosu-lang/gosu-lang.git

cd gosu-lang
mvn process-classes

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.673s
[INFO] Finished at: Thu Sep 04 07:37:28 PDT 2014
[INFO] Final Memory: 107M/777M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project gosu-test-api: Compilation failure: Compilation failure:
[ERROR] /Users/rkitts/work/gosu-lang/gosu-test-api/src/main/java/gw/testharness/KnownBreakConditionPredicate.java:[11,20] error: package org.fest.util does not exist
[ERROR] /Users/rkitts/work/gosu-lang/gosu-test-api/src/main/java/gw/testharness/KnownBreakConditionPredicate.java:[38,15] error: cannot find symbol

--- environment stuff ---
[/work/gosu-lang]: java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
[
/work/gosu-lang]: mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 00:44:56-0800)
Maven home: /Users/rkitts/work/gwire/rickkittssmbpro/maven/apache-maven-3.0.4
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac"
[~/work/gosu-lang]:

Bitwise Operators do not show errors if second operand is double/float

Bitwise operator i.e. &, |, ^ etc expect both operands to be int

Gosu shows correct error if the first operand is a double or float
var bitAnd1 = 8.45 & 42 //Error - Bitwise logical operand must be an int or long - GOOD

//Now, reverse the order of operands
var bitAnd2 = 42 & 8.45 //No error here - BAD

Expected Behavior:
Error should be shown if the operand around bitwise operators are double or float at any position

PR builds incorrectly report failure due to missing deployment credential

Since introducing CircleCI integration, we get the added benefit of automatically running pull request builds on CI.

However, the PR builds will always report a failure even if the tests all pass. This is because maven always tries to deploy to OSSRH (maven central snapshots repo).

For starters, we should add a maven profile or bash script to inspect environment variables and not deploy in those situations.

While I'm at it, the default dependency phase in CircleCI is kind of useless. Instead, I will refactor it to build and install the JARs, but skip tests. Then the test phase will actually execute tests. Note: since maven's incremental compiler is very flawed, be careful not to do a recompile when executing tests.

Finally, a stretch goal would be to completely automate releases from CI. This involves a lot of encryption magic, but I can take some inspiration from this page: http://www.debonair.io/post/maven-cd/

Static imports fail with ambiguous type parameters

On the gosu-lang email list, @hiraethus pointed out unexpected behavior using the new static import syntax.

@rsmckinney and I traced the problem down to org.hamcrest.core.IsEqual#equalTo. This is because the class defines a type parameter <T>, but the static method equalTo also defines a type parameter <T>.

public class IsEqual<T> extends BaseMatcher<T> {
...
    public static <T> Matcher<T> equalTo(T operand) {
        return new IsEqual<T>(operand);
    }

Despite having the same name, these two parameters have no relationship - and in fact, creating such ambiguous class/method declarations is disallowed in Gosu. In other words, this could only happen when performing a static import from a Java type.

We are currently preparing a fix for the parser to address this.

Plugin incorrectly reports version

The description given for the Gosu plugin when selected in the Plugins dialog in IntelliJ has an incorrect version number. Here's the text:

IntelliJ IDEA plugin for the Gosu programming language.
Version ${project.version}

Elvis operator evaluates first operand twice in case it passes null check

Don't really know if it is a bug or intended behavior, but here's the code sample:

var counter = 0
var incr : block() : String = \ -> {
    counter += 1
    return "a"
}

var t = incr() ?: "b"

print(t)
print(counter)

yields

"a"
2

It makes sense if you think about elvis operator as shorthand syntax for x != null ? x : y, but it can be misleading when you skim over the code.

If it is a bug I could try fixing it.

Should promote char/byte/short to int when the operator expects an int

Example #1 : promote char to int when negating

var lvar1 = -'c' //Negating a char //Shows error //Type info = ‘char’ //BAD
var lvar2 = ~'c' //Bit-wise NOT on a char //No error //Type info = ‘int’ //GOOD

Example #2 : promote char to int when bit-wise and
print('c' & 12) //shows error where as
print(12 & 'c') //does not show error

Example #3: promote byte to int as -(-128) won't fit in a byte
var byte11 : byte = -128
var byte22 = -byte11 //type info - still a byte - BAD

Intellij Idea Plugin not compatible with idea 13.1

Plugin 'com.guidewire.gosu' failed to initialize and will be disabled.  Please restart IntelliJ IDEA.

java.lang.NoSuchFieldError: USE_COMPILE_SERVER
    at gw.plugin.ij.core.PluginLoaderUtil.disableIJExternalCompiler(PluginLoaderUtil.java:382)
    at gw.plugin.ij.core.GosuProjectComponent.initComponent(GosuProjectComponent.java:68)
    at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter$1.getComponentInstance(ComponentManagerImpl.java:548)
    at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:590)
    at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:225)
    at com.intellij.util.pico.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:212)
    at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:199)
    at org.picocontainer.alternatives.AbstractDelegatingMutablePicoContainer.getComponentInstance(AbstractDelegatingMutablePicoContainer.java:75)
    at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponent(ComponentManagerImpl.java:121)
    at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:112)
    at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:89)
    at com.intellij.openapi.project.impl.ProjectImpl.init(ProjectImpl.java:296)
    at com.intellij.openapi.project.impl.ProjectManagerImpl.a(ProjectManagerImpl.java:280)
    at com.intellij.openapi.project.impl.ProjectManagerImpl.newProject(ProjectManagerImpl.java:233)
    at com.intellij.openapi.project.ex.ProjectManagerEx.createProject(ProjectManagerEx.java:71)
    at com.intellij.ide.util.projectWizard.ProjectBuilder.createProject(ProjectBuilder.java:79)
    at com.intellij.ide.impl.NewProjectUtil.a(NewProjectUtil.java:110)
    at com.intellij.ide.impl.NewProjectUtil.createFromWizard(NewProjectUtil.java:80)
    at com.intellij.ide.impl.NewProjectUtil.createNewProject(NewProjectUtil.java:75)
    at com.intellij.ide.actions.NewProjectAction.actionPerformed(NewProjectAction.java:28)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:164)
    at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:170)
    at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:133)
    at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:313)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

gosu wont start on virtual machine

I wanted to try gosu on ubuntu 14.04 (no X)
and all I got was this exception when running ./gosu:

Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
        at java.awt.Window.<init>(Window.java:536)
        at java.awt.Frame.<init>(Frame.java:420)
        at javax.swing.JFrame.<init>(JFrame.java:233)
        at editor.BasicGosuEditor.<init>(BasicGosuEditor.java:25)
        at editor.BasicGosuEditor.create(BasicGosuEditor.java:175)
        at editor.RunMe.lambda$launchEditor$0(RunMe.java:45)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Type cast for collection initializer behaves inconsistently

Consider this code

function fun(l: List<Integer>) {
}

function call() {
  fun({"1", "2"} as List<Integer>)    // errors "String cannot be converted to Integer"
  var y = {"1", "2"} as List<Integer> // no errors
}

I'm expecting to have the same errors in both cases (method call and variable declaration). Please clarify if this behavior is intended.

Should show error when assigning double to a variable of type float

var float1 : float = 42.5 //No error - BAD

var double1 : double = 42.5 //extracting to a variable
var float2 : float = double1 //Error - Good

var double2 = 42.5 //extracting to a variable but type is inferred
var float3 : float = double2 //Error - Good

Expected Behavior:
Should show error in the first case too i.e.
var float1 : float = 42.5

Incorrect annotation handling while generating 'proxy' class

Hello there. gosuc fails with the similar stacktrace:

java.lang.RuntimeException: java.lang.ClassCastException: gw.internal.gosu.parser.AsmMethodJavaClassMethod cannot be cast to gw.lang.reflect.java.IJavaClassType
        at gw.internal.gosu.parser.GosuClassProxyFactory$LazyStringSourceFileHandle.getSource(GosuClassProxyFactory.java:229)
        at gw.internal.gosu.parser.GosuClass.makeParserForPhase(GosuClass.java:2577)
        at gw.internal.gosu.parser.GosuClass.compileHeaderIfNeeded(GosuClass.java:1835)
        at gw.internal.gosu.parser.GosuClass.getSuperClass(GosuClass.java:2056)
        at gw.internal.gosu.parser.GosuClass_Proxy.getSuperClass(gw.internal.gosu.parser.GosuClass_Proxy:2)
        at gw.internal.gosu.parser.GosuClass.getTypeInfo(GosuClass.java:981)
        at gw.internal.gosu.parser.GosuClass.getTypeInfo(GosuClass.java:96)
        at gw.internal.gosu.parser.GosuClass_Proxy.getTypeInfo(gw.internal.gosu.parser.GosuClass_Proxy:2)
        at gw.internal.gosu.parser.GosuClass.getTypeInfo(GosuClass.java:983)
        at gw.internal.gosu.parser.GosuClass.getTypeInfo(GosuClass.java:96)
        at gw.internal.gosu.parser.GosuClass_Proxy.getTypeInfo(gw.internal.gosu.parser.GosuClass_Proxy:2)
        at gw.lang.gosuc.simple.GosuCompiler.isCompilable(GosuCompiler.java:94)
        at gw.lang.gosuc.simple.GosuCompiler.compile(GosuCompiler.java:58)
        at gw.lang.gosuc.cli.CommandLineCompiler.execute(CommandLineCompiler.java:66)
        at gw.lang.gosuc.cli.CommandLineCompiler.main(CommandLineCompiler.java:27)
  Caused by: java.lang.ClassCastException: gw.internal.gosu.parser.AsmMethodJavaClassMethod cannot be cast to gw.lang.reflect.java.IJavaClassType
        at gw.internal.gosu.parser.java.classinfo.AsmClassAnnotationInfo.makeArray(AsmClassAnnotationInfo.java:67)
        at gw.internal.gosu.parser.java.classinfo.AsmClassAnnotationInfo.normalizeValue(AsmClassAnnotationInfo.java:58)
        at gw.internal.gosu.parser.java.classinfo.AsmClassAnnotationInfo.getFieldValue(AsmClassAnnotationInfo.java:53)
        at gw.internal.gosu.parser.GosuClassProxyFactory.makeAnnotationSource(GosuClassProxyFactory.java:361)
        at gw.internal.gosu.parser.GosuClassProxyFactory.addAnnotations(GosuClassProxyFactory.java:342)
        at gw.internal.gosu.parser.GosuClassProxyFactory.buildModifiers(GosuClassProxyFactory.java:975)
        at gw.internal.gosu.parser.GosuClassProxyFactory.genMemberMethod(GosuClassProxyFactory.java:613)
        at gw.internal.gosu.parser.GosuClassProxyFactory.genMethodImpl(GosuClassProxyFactory.java:535)
        at gw.internal.gosu.parser.GosuClassProxyFactory.genClassImpl(GosuClassProxyFactory.java:294)
        at gw.internal.gosu.parser.GosuClassProxyFactory.genJavaClassProxy(GosuClassProxyFactory.java:253)
        at gw.internal.gosu.parser.GosuClassProxyFactory.access$100(GosuClassProxyFactory.java:42)
        at gw.internal.gosu.parser.GosuClassProxyFactory$2.call(GosuClassProxyFactory.java:198)
        at gw.internal.gosu.parser.GosuClassProxyFactory$2.call(GosuClassProxyFactory.java:193)
        at gw.internal.gosu.parser.GosuClassProxyFactory$LazyStringSourceFileHandle.getSource(GosuClassProxyFactory.java:225)
        ... 14 more

If there the following conditions are met:

  1. Some annotation with any array field.
  2. Java class with method/field/constructor that annotated with the annotation.
  3. Gosu class that extends the java class and overrides any it's method.

Here is sample project where you can make it fail.

I dived into it and as far as I can see (of course, maybe I wrong), the fix is pretty simple and I can send you PR with commit. Just feel the need to create issue firstly.

Method Scoring : (long, float) goes to fun(float, float) instead of fun(double, double)

Method Scoring : (long, float) goes to fun(float, float) instead of fun(double, double)

class TempClass1 {

class A {}
class B {}

public function fun(i : float, j : float) : A {
return null
}

public function fun(i : double, j : double) : B {
return null
}

function caller() {
var x1 : B = fun(100,42.5f) //CASE 1: (int, float) goes to (double, double) //GOOD
var x2 : A = fun(100L,42.5f) //CASE 2 :(long, float) goes to (float, float). //BAD
}
}

Expected Behavior:
The second call i.e. (long, float) should go to fun(double, double)

NullPointerException with OpenJDK

(I repost this issue here, because the original one from https://github.com/gosu-lang/gosu/issues/88 is not available anymore.)

With the OpenJDK the relativePath parameter in the isPathIgnored method of AbstractPlatformHelper is null sometimes. This doesn't happen with the Oracle JDK. Please see below for full details on how to reproduce this issue.

With OpenJDK

Java version:

$ java -version
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

Maven version:

$ mvn -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_55, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8

Exception:

$ git clone https://github.com/vakuum/polyglot-java

$ cd polyglot-java/gosu

$ export MAVEN_OPTS=-XX:MaxPermSize=128m

$ mvn clean install -DskipTests
...
[INFO] BUILD SUCCESS
...

$ mvn exec:java
...
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NullPointerException
        at java.io.File.<init>(File.java:277)
        at gw.config.AbstractPlatformHelper.isPathIgnored(AbstractPlatformHelper.java:104)
        at gw.fs.IDirectoryUtil.allContainedFilesExcludingIgnored(IDirectoryUtil.java:27)
        at gw.fs.IDirectoryUtil.allContainedFilesExcludingIgnored(IDirectoryUtil.java:20)
        at gw.internal.gosu.parser.FileSystemGosuClassRepository.addTypeNames(FileSystemGosuClassRepository.java:474)
        at gw.internal.gosu.parser.FileSystemGosuClassRepository.getAllTypeNames(FileSystemGosuClassRepository.java:180)
        at gw.internal.gosu.parser.EnhancementIndex.maybeLoadEnhancementIndex(EnhancementIndex.java:172)
        at gw.lang.reflect.gs.GosuClassTypeLoader.getType(GosuClassTypeLoader.java:128)
        at gw.lang.reflect.gs.GosuClassTypeLoader.getType(GosuClassTypeLoader.java:28)
        at gw.internal.gosu.parser.ModuleTypeLoader.loadType(ModuleTypeLoader.java:596)
        at gw.internal.gosu.parser.ModuleTypeLoader.loadTypeAndCacheResult(ModuleTypeLoader.java:498)
        at gw.internal.gosu.parser.ModuleTypeLoader.getTypeByFullNameIfValid(ModuleTypeLoader.java:410)
        at gw.internal.gosu.parser.TypeLoaderAccess.getByFullNameIfValid(TypeLoaderAccess.java:974)
        at gw.internal.gosu.parser.TypeLoaderAccess.getByFullNameIfValid(TypeLoaderAccess.java:949)
        at gw.internal.gosu.parser.TypeLoaderAccess.get(TypeLoaderAccess.java:843)
        at gw.lang.reflect.TypeSystem.get(TypeSystem.java:66)
        at gw.internal.gosu.parser.FrequentUsedJavaTypeCache.init(FrequentUsedJavaTypeCache.java:102)
        at gw.internal.gosu.parser.FrequentUsedJavaTypeCache.getHighUsageType(FrequentUsedJavaTypeCache.java:113)
        at gw.internal.gosu.parser.TypeLoaderAccess.get(TypeLoaderAccess.java:825)
        at gw.lang.reflect.TypeSystem.get(TypeSystem.java:66)
        at gw.internal.gosu.parser.DefaultTypeLoader.getIntrinsicTypeFromObject(DefaultTypeLoader.java:224)
        at gw.internal.gosu.parser.ModuleTypeLoader.getIntrinsicTypeFromObject(ModuleTypeLoader.java:364)
        at gw.internal.gosu.parser.TypeLoaderAccess$4.call(TypeLoaderAccess.java:319)
        at gw.internal.gosu.parser.TypeLoaderAccess$4.call(TypeLoaderAccess.java:315)
        at gw.internal.gosu.parser.TypeLoaderAccess.returnFirstNonNull(TypeLoaderAccess.java:723)
        at gw.internal.gosu.parser.TypeLoaderAccess.getIntrinsicTypeFromObject(TypeLoaderAccess.java:325)
        at gw.internal.gosu.parser.TypeLoaderAccess.getFromObject(TypeLoaderAccess.java:912)
        at gw.lang.reflect.TypeSystem.getFromObject(TypeSystem.java:102)
        at gw.internal.gosu.runtime.GosuRuntimeMethods.toString(GosuRuntimeMethods.java:408)
        at gw.internal.gosu.runtime.GosuRuntimeMethods.print(GosuRuntimeMethods.java:392)
        at polyglot.HelloGosu.hello(HelloGosu.gs:9)
        at polyglot.HelloGosu.main(HelloGosu.gs:5)
        ... 6 more
...
[INFO] BUILD FAILURE
...

With Oracle JDK

Java version:

$ java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

Maven version:

$ mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
Maven home: /opt/maven-3.1
Java version: 1.7.0_55, vendor: Oracle Corporation
Java home: /opt/jdk-1.7.0-55/jre
Default locale: en_US, platform encoding: UTF-8

No exception:

$ git clone https://github.com/vakuum/polyglot-java

$ cd polyglot-java/gosu

$ export MAVEN_OPTS=-XX:MaxPermSize=128m

$ mvn clean install -DskipTests
...
[INFO] BUILD SUCCESS
...

$ mvn exec:java
...
Gosu: Hello Gosu!
...

Tested under Ubuntu 12.04.4.

Error:Cannot find or create Gosu Compiler

hello!
I'm installed IntelliJ 14.1.6
SDK 1.8 (8.60)
and JARs jar idea-gosu-plugin-3.8.5
and still get this error.. (Error:Cannot find or create Gosu Compiler )
what can i do?

Relational Operator should not be applicable to Object type

var o : Object

var greaterThan10 = 42 > o //No error here
var greaterThan11 = 42 > new Object() //No error here
var greaterThan12 = o > new Object() //Error : Relational operator > cannot be applied to java.lang.Object

Expected Behavior:
Should show error in all the above cases

gosu-test module cleanup

We need to clean-up and standardize our source and test roots, and remove some of the intermingled Java sources saved under Gosu roots. Proper identification of src/main/gosu as a source root using build-helper-maven-plugin gets them on the classpath and removes the need to mark them as resources.

Make ArithmeticOperatorsTest dynamic

Test class gw.specification.expressions.arithmeticOperators.ArithmeticOperatorsTest requires itself to be compiled with JVM argument -DcheckedArithmetic=true in order to pass. But since maven compilation occurs in-process, this JVM argument must be set using the machine's JAVA_OPTS or MAVEN_OPTS variables when performing static compilation. This makes the test very brittle when run locally, and also means that the entire Gosu project is compiled using safe (and potentially slower) arithmetic operations - not desirable.

Some thoughts:

  • Convert ArithmeticOperatorsTest to be dynamic and executed inside an eval() block
  • gw.internal.gosu.ir.transform.AbstractElementTransformer caches the value of checkedArithmetic in a LazyVar, but provides no facility to reset/clear the value
    • Investigate exposing the mutators for checkedArithmetic as a command-line compiler argument

Add ability to enhance a structural type

Here's a feature which would be cool to have: enhancing a structure.

Here are some sample classes to help illustrate what I mean:

Base type; pretend that we don't control its content:

structure BaseType {
  property get Foo() : String
  property get Bar() : String
}

Additional property we use to "decorate" the base type:

structure MyThing extends BaseType {
  property set SomeValue(value : Boolean)
  property get SomeValue() : Boolean
}

Now I make a type which is structurally assignable to BaseType

class Whatever {
  var foo : String as Foo
  var bar : String as Bar
}

Now write a program to work with BaseType, but requires an ugly cast to MyThing plus null-safety checks:

var x : BaseType = new Whatever()
if((x as MyThing).SomeValue == null or (x as MyThing).SomeValue == false) {
  ...
}

It would be cool if we could enhance BaseType to abstract the cast and null safety check, like this:

enhancement BaseTypeEnhancement : BaseType {
  property get SomeValue() : boolean {
    return (this as MyThing).SomeValue ?: false
  }
  property set SomeValue(value : boolean) {
    (this as MyThing).SomeValue = value
  }
}

Now the program would look like this:

var x : BaseType = new Whatever()
if(!x.SomeValue) { //mmm
  ...
}

Avoid static compilation of usage site validators

Some Gosu projects leveraging IUsageSiteValidator create issues with command-line compilation. Validators may require type information only available at runtime, creating an unresolvable compile-time dependency. The chief offenders are Guidewire's QueryColumnParser and QueryOrderByParser.

We need a temporary workaround to avoid compiling any classes to disk which are using usage site validators, and the tests on them. Any other class will be compiled normally.

cannot create class "gw.plugin.ij.actions.CreateClassAction" [Plugin: com.guidewire.gosu]

cannot create class "gw.plugin.ij.actions.CreateClassAction" [Plugin: com.guidewire.gosu]
com.intellij.diagnostic.PluginException: cannot create class "gw.plugin.ij.actions.CreateClassAction" [Plugin: com.guidewire.gosu]
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convertStub(ActionManagerImpl.java:176)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:516)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:496)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:489)
at com.intellij.openapi.actionSystem.DefaultActionGroup.unStub(DefaultActionGroup.java:354)
at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:312)
at com.intellij.ide.actions.WeighingActionGroup.a(WeighingActionGroup.java:44)
at com.intellij.ide.actions.WeighingActionGroup.a(WeighingActionGroup.java:50)
at com.intellij.ide.actions.WeighingActionGroup.getChildren(WeighingActionGroup.java:67)
at com.intellij.ide.actions.NewActionGroup.getChildren(NewActionGroup.java:31)
at com.intellij.openapi.actionSystem.impl.Utils.a(Utils.java:225)
at com.intellij.openapi.actionSystem.impl.Utils.a(Utils.java:205)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:153)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:164)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:164)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:86)
at com.intellij.openapi.actionSystem.impl.Utils.fillMenu(Utils.java:280)
at com.intellij.openapi.actionSystem.impl.ActionMenu.g(ActionMenu.java:281)
at com.intellij.openapi.actionSystem.impl.ActionMenu.access$400(ActionMenu.java:41)
at com.intellij.openapi.actionSystem.impl.ActionMenu$MenuListenerImpl.menuSelected(ActionMenu.java:235)
at javax.swing.JMenu.fireMenuSelected(JMenu.java:1037)
at javax.swing.JMenu$MenuChangeListener.stateChanged(JMenu.java:1117)
at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.java:349)
at javax.swing.DefaultButtonModel.setSelected(DefaultButtonModel.java:232)
at javax.swing.JMenu.setSelected(JMenu.java:305)
at javax.swing.JMenu.menuSelectionChanged(JMenu.java:1186)
at com.intellij.openapi.actionSystem.impl.ActionMenu.menuSelectionChanged(ActionMenu.java:209)
at javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager.java:125)
at javax.swing.plaf.basic.BasicMenuUI$Handler.mouseEntered(BasicMenuUI.java:526)
at java.awt.Component.processMouseEvent(Component.java:6534)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.retargetMouseEnterExit(Container.java:4686)
at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:4665)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4514)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:565)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.intellij.util.ReflectionUtil.newInstance(ReflectionUtil.java:452)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convertStub(ActionManagerImpl.java:153)
... 64 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.intellij.util.ReflectionUtil.newInstance(ReflectionUtil.java:449)
... 65 more
Caused by: java.lang.NoSuchMethodError: com.intellij.ide.actions.CreateTemplateInPackageAction.(Ljava/lang/String;Ljava/lang/String;Ljavax/swing/Icon;Z)V
at gw.plugin.ij.actions.CreateClassAction.(CreateClassAction.java:33)
... 70 more

Simple pattern matching with switch()

(Nice to have) Allow using simple pattern matching with switch() statement (a la Scala).

Example (does not work with Gosu 1.1):

switch(typeof content) {
   case(Json):
       return Gson.toJson(content)
   case(RawContent):
       return content.AsText
   case(Map<String, String>):
       return content.values()
   default:
       return content.toString()
}

It is possible to achieve something similar with a series of:

if (content typeis Xxx) {
}
else if (content typeis Yyy) {
}
else ...

but the "typeis [variable name]" in the condition seems to be needless repetition.

Plugin: Refactor=>Extract=>Variable drops last character

Take this code:

retVal = ProductType.valueOf(components[components.length - 2])

highlight the argument to valueOf (i.e. components[components.length - 2])

Right click, Refactor=>Extract=>Variable. Type in a variable name, say x. This is the result:

var x = components[components.length - 2

Notice the dropped closing bracket.

Unable to mock with Mockito or EasyMock

When trying to mock with mockito framework getting a runtime exception from Gosu.

java.lang.IllegalStateException: Could not find method for when on org.mockito.Mockito with specified param types

at gw.internal.gosu.runtime.GosuRuntimeMethods.invokeMethodInfo(GosuRuntimeMethods.java:111)

at program_.__Program__1556$TestMockito.testMock(Unknown Source)

The program is as below.

uses org.mockito.Mockito

class TestMockito
{

function testMock()
{
var orig : Original = new Original()
print("*************************** In the mock test sampler")
var shar1 = Mockito.mock(Original)
var result = Mockito.when(shar1.testMe()).thenReturn("MockTested")
print(result)
}
}

class Original
{
function testMe() : String
{
return "tested"
}
}

var t : TestMockito = new TestMockito()
t.testMock()

Move idea-gosu-plugin, ij-compiler-api and ij-editor-devtools into the specific Maven profile

Could you please add possibility to build most part of Gosu modules without necessity to clone Intellij IDEA's sources? It could be separate Maven module with (or without) activation condition on env.IDEA_HOME.

I understand that it's possible to:

  • comment unnecessary modules
  • use newest Maven and "-pl" parameter

... but it's not so comfortable as out-of-box optional profile.

Rewire Antlr Parser

Is there any way i can rewire the antlr parser and change the grammar so that the language can support indentation in languages like python, coffeescript?

support override modifier in property short syntax

Hi,

It is perfectly fine and possible to override property set and property get "functions" and annotate them properly:

var _someProperty = 0
override property get SomeProperty(): int {
  return this._someProperty
}
override property set SomeProperty(value: int) {
  this._someProperty = value
}

However, it is impossible to use the short syntax and make it easily visible that this overrides some method from the parent class / interface. We can see this in the grammar on the gosu homepage.

var _someProperty: int as SomeProperty = 0 // we cannot put an "override" here

The same goes with readonly properties:

final var _someProeprty: int as readonly SomeProperty = 0 // we cannot put an "override" here

Are there plans to support something like that?

Getting 'NullPointerException' error while running 'gosu' command for Gosu lab

Hi Team,

I have downloaded gosu-1.14.1-full distribution and using this in my windows system. After using some days, now I am getting the below error/exception when I am trying to load Gosu Lab using 'gosu' exe file. Please check and let me know the reason why it was failed to load.

The below is the detailed error.

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.lang.NullPointerException
at editor.util.EditorUtilities.loadRecentExperiment(EditorUtilities.java:814)
at editor.RunMe.lambda$launchEditor$0(RunMe.java:46)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at java.io.File.(Unknown Source)
at editor.util.EditorUtilities.loadRecentExperiment(EditorUtilities.java:810)
... 15 more

IDE buggy on IntelliJ IDEA 12.1.7

Running the community edition, downloaded the plugin and installed.

UI becomes incredibly unresponsive and cannot even paste code into a gs class

11:59:28 PM Throwable: No parse for a non-empty string: ; type=gosu.FILE (gw.plugin.ij.lang.psi.stubs.elements.GosuStubFileElementType)
11:59:33 PM NullPointerException: null

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.