Skip to content

Implement ES6 transpilation of super.getter calls #1089

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

Closed
ochafik opened this issue Aug 19, 2015 · 3 comments
Closed

Implement ES6 transpilation of super.getter calls #1089

ochafik opened this issue Aug 19, 2015 · 3 comments
Labels

Comments

@ochafik
Copy link

ochafik commented Aug 19, 2015

Calls to super getters aren't supported yet.

class Foo {
  get x() { return 'Foo'; }
}
class Bar extends Foo {
  get x() { return super.x; }
}
console.log(new Foo().x);
console.log(new Bar().x);

Current error:

ERROR - ES6 transpilation of 'Only calls to super or to a method of super are supported.' is not yet implemented.
  get x() { return super.x; }
                   ^

This is needed to compile DDC's output with Closure.

@ochafik
Copy link
Author

ochafik commented Sep 12, 2015

Hey guys, I had a look at how to work around this issue and came up with #1133. Please let me know what you think :-)

@bitbay
Copy link

bitbay commented Mar 2, 2016

It is still an issue using --language_in ECMASCRIPT6 with --language_out ES5_STRICT.

Closure Compiler (http://github.com/google/closure-compiler)
Version: v20160208
Built on: 2016/02/08 16:23

My workaround using

class Foo {
  set x(value) { this._x = value; }
  setX(value) { this.x = value }
}
class Bar extends Foo {
  set x(value) { super.setX(value); }
}

throws an error:

$ java -jar compiler.jar --language_in ECMASCRIPT6 --language_out ES5_STRICT --compilation_level ADVANCED_OPTIMIZATIONS --js test.js
java.lang.RuntimeException: INTERNAL COMPILER ERROR.                                             
Please report this problem.                                                                      

null                                                                                             
  Node(SUPER): test.js:6:17                                                                      
  set x(value) { super.setX(value); }                                                            
  Parent(GETPROP): test.js:6:17                                                                  
  set x(value) { super.setX(value); }                                                            

        at com.google.javascript.jscomp.Es6ConvertSuper.visitSuper(Es6ConvertSuper.java:137)     
        at com.google.javascript.jscomp.Es6ConvertSuper.visit(Es6ConvertSuper.java:70)           
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:621)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBlockScope(NodeTraversal.java:664) 
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:609)     
        at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:655)   
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:607)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:615)     
        at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:297)           
        at com.google.javascript.jscomp.NodeTraversal.traverseEs6(NodeTraversal.java:564)        
        at com.google.javascript.jscomp.Es6ConvertSuper.process(Es6ConvertSuper.java:191)        
        at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:285)
        at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:217)          
        at com.google.javascript.jscomp.Compiler.check(Compiler.java:771)                        
        at com.google.javascript.jscomp.Compiler.compileInternal(Compiler.java:687)              
        at com.google.javascript.jscomp.Compiler.access$000(Compiler.java:83)                    
        at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:645)                       
        at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:642)                       
        at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:93)        
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)                    
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)                              
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)       
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)       
        at java.lang.Thread.run(Thread.java:722)                                                 
Caused by: java.lang.NullPointerException                                                        
        ... 31 more                                                                              

@ChadKillingsworth
Copy link
Collaborator

this was fixed a while ago.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants