Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java.awt is not implemented? #73

Open
vuvk opened this issue Jan 17, 2021 · 2 comments
Open

java.awt is not implemented? #73

vuvk opened this issue Jan 17, 2021 · 2 comments
Labels
bug Something isn't working

Comments

@vuvk
Copy link

vuvk commented Jan 17, 2021

Hello. I tried build HelloWorld and it works. Ok. Now I try compile HelloAwt. Source:
`import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class HelloAwt {

static class FrameWin extends Frame implements WindowListener {

    public FrameWin (String FrameTitle) {
        super (FrameTitle);

        addWindowListener ((WindowListener) this);
    }

    @Override
    public void windowOpened (WindowEvent e) {}
    @Override
    public void windowClosing (WindowEvent e) {
        this.dispose ();
    }
    @Override
    public void windowClosed (WindowEvent e) {}
    @Override
    public void windowIconified (WindowEvent e) {}
    @Override
    public void windowDeiconified (WindowEvent e) {}
    @Override
    public void windowActivated (WindowEvent e) {}
    @Override
    public void windowDeactivated (WindowEvent e) {}
}

public static void main (String [] args) {
    FrameWin frame = new FrameWin ("test awt window");
    frame.setSize (640, 480);
    frame.setResizable (false);
    frame.setLocationRelativeTo (null);
    frame.setVisible (true);
}

} `

I ran command: ./bin/jlangc -cp jdk/out/classes HelloAwt.java and it builded HelloAwt.ll
After I ran ./bin/compile_ll.sh HelloAwt.ll and it crash: [log] (https://pastebin.com/2ez2QcFB) ("неопределённая ссылка" translate as "undefined link")

Awt it is not implemented part?

@dz333
Copy link
Collaborator

dz333 commented Feb 1, 2021

Hi,

We have not implemented support for all of the JDK libraries in JLang's JVM runtime API yet.
Therefore, we only compile a small subset of the JDK when building the JLang JDK runtime,
and we don't compile all of the supported JDK classes.

I have not tested the awt libraries yet and I don't know if they are supported by JLang,
but you can test this yourself by adding the following import statements to <jlang_top_dir>/jdk/Main.java
and rebuilding.

import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

We plan to improve the infrastructure for compiling the JDK libraries in the future.


Edit: I just tested compiling the JDK awt libraries and it currently fails in JLang. I'll use this issue to track that bug.

@dz333
Copy link
Collaborator

dz333 commented Feb 1, 2021

Error when compiling awt libs:

    java.awt.Window.AccessibleAWTWindow() cannot be invoked with arguments 
    (java.awt.Frame).
    protected class AccessibleAWTFrame extends AccessibleAWTWindow
              ^

1 error.
Exception in thread "main" polyglot.util.InternalCompilerError: /Users/drew/poly/JLang/jdk/src/java/awt/Frame.java:1284,14-14: Constructor java.awt.Window.AccessibleAWTWindow() cannot be invoked with arguments (java.awt.Frame).
	at jlang.util.TypedNodeFactory.ConstructorCall(TypedNodeFactory.java:207)
	at jlang.visit.SubstituteEnclosingInstances.leaveDesugar(DesugarInnerClasses.java:180)
	at jlang.visit.DesugarVisitor.leaveDesugar(DesugarVisitor.java:137)
	at jlang.visit.DesugarVisitor.leave(DesugarVisitor.java:96)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:304)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visitChild(Node_c.java:247)
	at polyglot.ast.Node_c.visitList(Node_c.java:305)
	at polyglot.ast.AbstractBlock_c.visitChildren(AbstractBlock_c.java:106)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:296)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visitChild(Node_c.java:247)
	at polyglot.ast.ConstructorDecl_c.visitChildren(ConstructorDecl_c.java:132)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ext.jl5.ast.JL5AnnotatedElementExt.visitChildren(JL5AnnotatedElementExt.java:85)
	at polyglot.ext.jl5.ast.JL5ProcedureDeclExt.visitChildren(JL5ProcedureDeclExt.java:112)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:296)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visitChild(Node_c.java:247)
	at polyglot.ast.Node_c.visitList(Node_c.java:305)
	at polyglot.ast.ClassBody_c.visitChildren(ClassBody_c.java:106)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:296)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visitChild(Node_c.java:247)
	at polyglot.ast.ClassDecl_c.visitChildren(ClassDecl_c.java:276)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ext.jl5.ast.JL5AnnotatedElementExt.visitChildren(JL5AnnotatedElementExt.java:85)
	at polyglot.ext.jl5.ast.JL5ClassDeclExt.visitChildren(JL5ClassDeclExt.java:163)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:296)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visitChild(Node_c.java:247)
	at polyglot.ast.Node_c.visitList(Node_c.java:305)
	at polyglot.ast.ClassBody_c.visitChildren(ClassBody_c.java:106)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:296)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visitChild(Node_c.java:247)
	at polyglot.ast.ClassDecl_c.visitChildren(ClassDecl_c.java:276)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ext.jl5.ast.JL5AnnotatedElementExt.visitChildren(JL5AnnotatedElementExt.java:85)
	at polyglot.ext.jl5.ast.JL5ClassDeclExt.visitChildren(JL5ClassDeclExt.java:163)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:296)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visitChild(Node_c.java:247)
	at polyglot.ast.Node_c.visitList(Node_c.java:305)
	at polyglot.ast.SourceFile_c.visitChildren(SourceFile_c.java:185)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.ast.Ext_c.visitChildren(Ext_c.java:173)
	at polyglot.ast.JLang_c.visitChildren(JLang_c.java:112)
	at polyglot.visit.NodeVisitor.visitEdgeNoOverride(NodeVisitor.java:296)
	at polyglot.visit.NodeVisitor.visitEdge(NodeVisitor.java:261)
	at polyglot.ast.Node_c.visit(Node_c.java:252)
	at polyglot.frontend.VisitorPass.run(VisitorPass.java:81)
	at jlang.visit.DesugarInnerClasses$1.run(DesugarInnerClasses.java:62)
	at jlang.util.JLangDesugared$1.run(JLangDesugared.java:124)
	at polyglot.frontend.Scheduler.runPass(Scheduler.java:640)
	at polyglot.frontend.Scheduler.runGoal(Scheduler.java:530)
	at polyglot.frontend.Scheduler.attemptGoal(Scheduler.java:475)
	at polyglot.frontend.Scheduler.attemptGoal(Scheduler.java:448)
	at polyglot.frontend.Scheduler.attemptGoal(Scheduler.java:448)
	at polyglot.frontend.Scheduler.attemptGoal(Scheduler.java:448)
	at polyglot.frontend.Scheduler.attemptGoal(Scheduler.java:399)
	at polyglot.frontend.Scheduler.runToCompletion(Scheduler.java:331)
	at polyglot.ext.jl5.JL5Scheduler.runToCompletion(JL5Scheduler.java:335)
	at polyglot.frontend.Compiler.runToGoal(Compiler.java:237)
	at polyglot.frontend.Compiler.compile(Compiler.java:189)
	at polyglot.frontend.Compiler.compileFiles(Compiler.java:179)
	at polyglot.main.Main.start(Main.java:182)
	at polyglot.main.Main.start(Main.java:138)
	at jlang.Main.main(Main.java:16)
Caused by: polyglot.types.NoMemberException: Constructor java.awt.Window.AccessibleAWTWindow() cannot be invoked with arguments (java.awt.Frame).```

@dz333 dz333 added the bug Something isn't working label Feb 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants