• S
    rewrite owner when copying FunctionDescriptor from supertype scope · 4b94eb5e
    Stepan Koltsov 提交于
    that fixes invocation:
    
    >>> StringBuilder.length()
    
    that was compiled to
    
    >>> invokevirtual CharSequence.length()
    
    and now compiles to
    
    >>> invokevirtual StringBuilder.length()
    
    Essentially patch rewrites FunctionDescriptor.containingDeclaration
    when FunctionDescriptor is copied to subclass scope.
    
    FunctionDescriptor now has kind field that can be
    * DECLARATION (for "real" function, maybe abstract)
    * DELEGATION
    * FAKE_OVERRIDE (created for functions from supertypes)
    
    All tests pass although some parts of code are buggy and ugly.
    
    Random comments about this patch:
    
    * FunctionDescriptor.overrides point to function descriptors of supertype scopes
    
    * Filling of memberScope with supertypes is moved to OverrideResolver
    
    * ExpressionCodegen.intermediateValueForProperty must be rewritten
    
    * Patch adds not nice REDECLARATION reports (see compiler/testData/diagnostics/tests/*).
      Will be fixed later.
    4b94eb5e
JavaDescriptorResolver.java 71.2 KB