Package st.gravel.support.compiler.ast

Source Code of st.gravel.support.compiler.ast.SystemMappingUpdater$SystemMappingUpdater_Factory

package st.gravel.support.compiler.ast;

/*
  This file is automatically generated from typed smalltalk source. Do not edit by hand.
  (C) AG5.com
*/

import java.math.BigInteger;
import st.gravel.support.jvm.NonLocalReturn;
import st.gravel.support.compiler.ast.DiffVisitor;
import st.gravel.support.compiler.ast.DiffVisitor.DiffVisitor_Factory;
import st.gravel.support.compiler.ast.SystemMapping;
import st.gravel.support.compiler.ast.SystemMappingCompilerTools;
import st.gravel.support.compiler.ast.SelectorConverter;
import java.util.List;
import st.gravel.support.compiler.ast.Reference;
import st.gravel.support.compiler.ast.BoundVariableDeclarationNode;
import st.gravel.support.compiler.ast.ClassDescriptionNode;
import st.gravel.support.compiler.jvm.JVMClassCompiler;
import st.gravel.support.compiler.jvm.JVMClass;
import st.gravel.support.compiler.jvm.JVMNonPrimitiveType;
import st.gravel.support.compiler.ast.IdentityClassPartMapping;
import st.gravel.support.compiler.ast.MethodNode;
import st.gravel.support.compiler.ast.ClassMapping;
import st.gravel.support.compiler.ast.ExtensionClassPartMapping;
import java.util.HashMap;
import st.gravel.support.compiler.ast.InstVarMapping;
import java.util.Set;
import st.gravel.support.compiler.ast.AbstractMethodMapping;
import st.gravel.support.compiler.ast.SourceFile;
import st.gravel.support.compiler.ast.UpdateClassDescriptorDiff;
import st.gravel.support.compiler.ast.ClassNode;
import st.gravel.support.compiler.ast.MetaclassNode;
import st.gravel.support.compiler.ast.UnaryMethodNode;
import st.gravel.support.compiler.ast.SequenceNode;
import st.gravel.support.compiler.ast.ReturnNode;
import st.gravel.support.compiler.ast.VariableNode;
import st.gravel.support.compiler.ast.PragmaNode;
import st.gravel.support.compiler.ast.InstanceCreationNode;
import java.util.ArrayList;
import st.gravel.support.compiler.ast.SharedDeclarationNode;
import st.gravel.support.compiler.ast.AbsoluteReference;
import st.gravel.support.compiler.ast.AbstractClassMapping;
import st.gravel.support.compiler.ast.ClassPartMapping;
import st.gravel.support.compiler.ast.MethodMapping;
import st.gravel.support.compiler.ast.Node;
import st.gravel.support.compiler.ast.Expression;
import st.gravel.support.compiler.ast.IntermediateNodeRewriter;
import st.gravel.support.compiler.ast.NonLocalReturnRewriter;
import st.gravel.support.compiler.ast.NonLocalTempWritesToHolderConverter;
import st.gravel.support.compiler.ast.VariableAccessToFieldAccessConverter;
import st.gravel.support.compiler.ast.SelfNode;
import java.util.HashSet;
import java.util.Map;
import st.gravel.support.compiler.ast.NamespaceNode;
import st.gravel.support.compiler.ast.AddClassDiff;
import st.gravel.support.compiler.ast.RemoveClassDiff;
import st.gravel.support.compiler.ast.UpdateClassDiff;
import st.gravel.support.compiler.ast.WrapJavaclassDiff;
import st.gravel.support.compiler.ast.ClassDiff;
import st.gravel.support.compiler.ast.NodeVisitorError;
import st.gravel.support.compiler.ast.NewClassDiff;

public class SystemMappingUpdater extends DiffVisitor implements Cloneable {

  public static SystemMappingUpdater_Factory factory = new SystemMappingUpdater_Factory();

  SystemMappingCompilerTools _compilerTools;

  boolean _isStaticOverride;

  SelectorConverter _selectorConverter;

  SystemMapping _systemMapping;

  List<Reference> _toInitialize;

  public static class SystemMappingUpdater_Factory extends DiffVisitor_Factory {

    public SystemMappingUpdater basicNew() {
      SystemMappingUpdater newInstance = new SystemMappingUpdater();
      newInstance.initialize();
      return newInstance;
    }

    public SystemMappingUpdater systemMapping_compilerTools_(final SystemMapping _aSystemMapping, final SystemMappingCompilerTools _aSystemMappingCompilerTools) {
      return this.basicNew().initializeSystemMapping_compilerTools_(_aSystemMapping, _aSystemMappingCompilerTools);
    }
  }

  static public SystemMappingUpdater _systemMapping_compilerTools_(Object receiver, final SystemMapping _aSystemMapping, final SystemMappingCompilerTools _aSystemMappingCompilerTools) {
    return factory.systemMapping_compilerTools_(_aSystemMapping, _aSystemMappingCompilerTools);
  }

  public BoundVariableDeclarationNode[] allInstVarsForReference_(final Reference _aReference) {
    if (_aReference == null) {
      return new BoundVariableDeclarationNode[] {};
    }
    return _systemMapping.classMappingAtReference_(_aReference).allInstVarsIn_(_systemMapping);
  }

  public SystemMappingUpdater compileClassDescriptionNodeNonStatic_(final ClassDescriptionNode _aClassDescriptionNode) {
    final Class _identityClass;
    final IdentityClassPartMapping _identityMapping;
    final MethodNode[] _allMethods;
    final MethodNode[] _extraMethods;
    final ClassDescriptionNode _ecdn;
    _extraMethods = this.extraMethodsFor_(_aClassDescriptionNode);
    _ecdn = _aClassDescriptionNode.withExtraMethods_(_extraMethods);
    _identityClass = this.compileClass_isStatic_(_ecdn, false);
    _allMethods = this.methods_withExtraMethods_(_aClassDescriptionNode.methods(), _extraMethods);
    _identityMapping = ((IdentityClassPartMapping) this.linkMethods_in_identityClass_to_isStatic_(_allMethods, _identityClass, _identityClass, IdentityClassPartMapping.factory.javaClass_isGenerated_(_identityClass, true), false));
    _systemMapping.addClassMapping_(ClassMapping.factory.identityMapping_extensions_instVarMappings_classNode_(_identityMapping, new ExtensionClassPartMapping[] {}, new java.util.HashMap<String, InstVarMapping>(), _aClassDescriptionNode));
    return this;
  }

  public SystemMappingUpdater compileClassDescriptionNodeStatic_(final ClassDescriptionNode _aClassDescriptionNode) {
    final Class _extensionClass;
    IdentityClassPartMapping _identityMapping;
    final MethodNode[] _allMethods;
    final MethodNode[] _extraMethods;
    final ClassDescriptionNode _ecdn;
    _extraMethods = this.extraMethodsFor_(_aClassDescriptionNode);
    _allMethods = this.methods_withExtraMethods_(_aClassDescriptionNode.methods(), _extraMethods);
    _ecdn = _aClassDescriptionNode.withExtraMethods_(_extraMethods);
    _extensionClass = this.compileClass_isStatic_(_ecdn, true);
    _identityMapping = IdentityClassPartMapping.factory.javaClass_isGenerated_(_aClassDescriptionNode.isNilClass() ? null : _extensionClass, true);
    _identityMapping = ((IdentityClassPartMapping) this.linkMethods_in_identityClass_to_isStatic_(_allMethods, _extensionClass, _extensionClass, _identityMapping, true));
    _systemMapping.addClassMapping_(ClassMapping.factory.identityMapping_extensions_instVarMappings_classNode_(_identityMapping, new ExtensionClassPartMapping[] {}, new java.util.HashMap<String, InstVarMapping>(), _aClassDescriptionNode));
    return this;
  }

  public SystemMappingUpdater compileClassDescriptionNode_(final ClassDescriptionNode _aClassDescriptionNode) {
    return this.compileClassDescriptionNode_isStatic_(_aClassDescriptionNode, false);
  }

  public SystemMappingUpdater compileClassDescriptionNode_isStatic_(final ClassDescriptionNode _aClassDescriptionNode, final boolean _isStatic) {
    if (_isStatic) {
      SystemMappingUpdater.this.compileClassDescriptionNodeStatic_(_aClassDescriptionNode);
    } else {
      SystemMappingUpdater.this.compileClassDescriptionNodeNonStatic_(_aClassDescriptionNode);
    }
    return this;
  }

  public Class compileClass_extensionPostfix_isStatic_identityClass_(final ClassDescriptionNode _aClassDescriptionNode, final String _extensionPostfix, final boolean _isStatic, final Class _identityClass) {
    final JVMClassCompiler _compiler;
    final Class _extensionClass;
    final JVMClass _jvmClass;
    _compiler = JVMClassCompiler.factory.classDescriptionNode_systemNode_systemMappingUpdater_isStatic_(_aClassDescriptionNode, _systemMapping.systemNode(), this, _isStatic);
    if (_extensionPostfix != null) {
      _compiler.extensionPostfix_(_extensionPostfix);
    }
    if (_identityClass != null) {
      _compiler.selfType_(((JVMNonPrimitiveType) _compilerTools.jvmTypeForClass_(_identityClass)));
    }
    _jvmClass = _compiler.compileClassNode();
    _extensionClass = _compilerTools.writeClass_(_jvmClass);
    _compiler.extraClassesDo_(new st.gravel.support.jvm.Block1<Object, JVMClass>() {

      @Override
      public Object value_(final JVMClass _each) {
        return _compilerTools.writeClass_(_each);
      }
    });
    _compilerTools.runAstInit_(_jvmClass);
    _compiler.extraClassesDo_(new st.gravel.support.jvm.Block1<Object, JVMClass>() {

      @Override
      public Object value_(final JVMClass _each) {
        return _compilerTools.runAstInit_(_each);
      }
    });
    return _extensionClass;
  }

  public Class compileClass_isStatic_(final ClassDescriptionNode _aClassDescriptionNode, final boolean _isStatic) {
    return this.compileClass_extensionPostfix_isStatic_identityClass_(_aClassDescriptionNode, null, _isStatic, null);
  }

  public SystemMappingUpdater compiledMethodNodesIn_do_(final Reference _superclassReference, final st.gravel.support.jvm.Block1<Object, MethodNode> _aBlock) {
    final ClassMapping[] _superMapping;
    final Class _sc;
    final java.util.Set<st.gravel.core.Symbol>[] _allSelectors;
    _allSelectors = new java.util.Set[1];
    _superMapping = new ClassMapping[1];
    if (_superclassReference == null) {
      return SystemMappingUpdater.this;
    }
    _superMapping[0] = ((ClassMapping) _systemMapping.classMappingAtReference_(_superclassReference));
    _allSelectors[0] = _superMapping[0].allSelectorsIn_(_systemMapping);
    _sc = _superMapping[0].identityClass();
    _compilerTools.methodNamesIn_do_(_sc, new st.gravel.support.jvm.Block2<Object, String, Integer>() {

      @Override
      public Object value_value_(final String _methodName, final Integer _numArgs) {
        final st.gravel.core.Symbol _sel;
        _sel = _selectorConverter.functionNameAsSelector_(_methodName);
        if (_allSelectors[0].contains(_sel)) {
          final AbstractMethodMapping _methodMapping;
          _methodMapping = _systemMapping.methodMappingFrom_selector_(_superMapping[0], _sel);
          if ((_methodMapping != null) && (_methodMapping.methodNode() != null)) {
            return _aBlock.value_(_methodMapping.methodNode());
          }
        }
        return SystemMappingUpdater.this;
      }
    });
    return this;
  }

  public ExtensionClassPartMapping compileExtensionClassPartMapping_methods_identityClass_instVars_sourceFile_(final ClassDescriptionNode _aClassDescriptionNode, final MethodNode[] _extensionMethods, final Class _identityClass, final BoundVariableDeclarationNode[] _boundInstVars, final SourceFile _sourceFile) {
    final Class _extensionClass;
    _extensionClass = this.compileClass_extensionPostfix_isStatic_identityClass_(_aClassDescriptionNode, _compilerTools.nextExtensionPostfix(), true, _identityClass);
    return ((ExtensionClassPartMapping) this.linkMethods_in_identityClass_to_isStatic_(_extensionMethods, _extensionClass, _identityClass, ExtensionClassPartMapping.factory.javaClass_isGenerated_(_extensionClass, true), true));
  }

  public SystemMappingCompilerTools compilerTools() {
    return _compilerTools;
  }

  public SystemMappingUpdater copy() {
    try {
      SystemMappingUpdater _temp1 = (SystemMappingUpdater) this.clone();
      _temp1.postCopy();
      return _temp1;
    } catch (CloneNotSupportedException e) {
      throw new RuntimeException(e);
    }
  }

  public SystemMappingUpdater executeUpdateClassDescriptorDiff_reference_(final UpdateClassDescriptorDiff _anUpdateClassDescriptorDiff, final Reference _aReference) {
    final ExtensionClassPartMapping _ecm;
    ClassMapping _cm;
    final ClassDescriptionNode _ncn;
    final MethodNode[] _methods;
    _cm = ((ClassMapping) _systemMapping.classMappingAtReference_(_aReference));
    _cm = ((ClassMapping) st.gravel.support.jvm.ArrayExtensions.inject_into_(_anUpdateClassDescriptorDiff.updatedMethodNodes(), _cm, ((st.gravel.support.jvm.Block2<ClassMapping, ClassMapping, MethodNode>) (new st.gravel.support.jvm.Block2<ClassMapping, ClassMapping, MethodNode>() {

      @Override
      public ClassMapping value_value_(final ClassMapping _classMapping, final MethodNode _methodNode) {
        return (ClassMapping) _classMapping.withoutMethodMapping_(_methodNode.selector());
      }
    }))));
    _cm = ((ClassMapping) st.gravel.support.jvm.ArrayExtensions.inject_into_(_anUpdateClassDescriptorDiff.deletedSelectors(), _cm, ((st.gravel.support.jvm.Block2<ClassMapping, ClassMapping, String>) (new st.gravel.support.jvm.Block2<ClassMapping, ClassMapping, String>() {

      @Override
      public ClassMapping value_value_(final ClassMapping _classMapping, final String _selector) {
        return (ClassMapping) _classMapping.withoutMethodMapping_(_selector);
      }
    }))));
    _ncn = _anUpdateClassDescriptorDiff.applyOnClassNode_(_cm.classNode());
    _methods = st.gravel.support.jvm.ArrayExtensions.copyWithAll_(_anUpdateClassDescriptorDiff.methodNodes(), _anUpdateClassDescriptorDiff.updatedMethodNodes());
    _ecm = this.compileExtensionClassPartMapping_methods_identityClass_instVars_sourceFile_(_ncn, _methods, _cm.identityClass(), _cm.classNode().boundInstVars(), this.findSourceFile_(_anUpdateClassDescriptorDiff.methodNodes()));
    _systemMapping.addClassMapping_(_cm.withClassNode_(_ncn).withExtension_(_ecm));
    return this;
  }

  public MethodNode[] extraMethodsForClassNode_(final ClassNode _aClassNode) {
    return st.gravel.support.jvm.ArrayFactory.with_(UnaryMethodNode.factory.selector_body_returnType_pragmas_protocol_("class", SequenceNode.factory.statement_(ReturnNode.factory.value_(VariableNode.factory.name_(_aClassNode.name().asString()))), null, new PragmaNode[] {}, "extra"));
  }

  public MethodNode[] extraMethodsForMetaclassNode_(final MetaclassNode _aMetaclassNode) {
    return st.gravel.support.jvm.ArrayFactory.with_(UnaryMethodNode.factory.selector_body_returnType_pragmas_protocol_("basicNew", SequenceNode.factory.statement_(ReturnNode.factory.value_(InstanceCreationNode.factory.reference_(_aMetaclassNode.reference().nonmeta()))), null, new PragmaNode[] {}, "extra"));
  }

  public MethodNode[] extraMethodsFor_(final ClassDescriptionNode _aClassDescriptionNode) {
    if (_aClassDescriptionNode.isClassNode()) {
      return SystemMappingUpdater.this.extraMethodsForClassNode_(((ClassNode) _aClassDescriptionNode));
    } else {
      return SystemMappingUpdater.this.extraMethodsForMetaclassNode_(((MetaclassNode) _aClassDescriptionNode));
    }
  }

  public SystemMappingUpdater_Factory factory() {
    return factory;
  }

  public SourceFile findSourceFile_(final MethodNode[] _methodNodes) {
    for (final MethodNode _each : _methodNodes) {
      if (_each.sourcePosition() != null) {
        return _each.sourcePosition().sourceFile();
      }
    }
    return null;
  }

  @Override
  public SystemMappingUpdater initialize() {
    _selectorConverter = SelectorConverter.factory.basicNew();
    _toInitialize = new java.util.ArrayList();
    _isStaticOverride = false;
    return this;
  }

  public SystemMappingUpdater initializeClassShareds_(final MetaclassNode _aMetaclassNode) {
    for (final SharedDeclarationNode _sharedVariable : _aMetaclassNode.sharedVariables()) {
      final AbsoluteReference _reference;
      _reference = _aMetaclassNode.reference().nonmeta().$slash$(st.gravel.core.Symbol.value(_sharedVariable.name()));
      _systemMapping.singletonAtReference_initialize_(_reference, _sharedVariable);
    }
    return this;
  }

  public SystemMappingUpdater initializeSystemMapping_compilerTools_(final SystemMapping _aSystemMapping, final SystemMappingCompilerTools _aSystemMappingCompilerTools) {
    _systemMapping = _aSystemMapping;
    _compilerTools = _aSystemMappingCompilerTools;
    this.initialize();
    return this;
  }

  public SystemMappingUpdater link() {
    _systemMapping.classMappingsDo_(new st.gravel.support.jvm.Block1<Object, AbstractClassMapping>() {

      @Override
      public Object value_(final AbstractClassMapping _acm) {
        if (_acm.classNode().isMeta()) {
          SystemMappingUpdater.this.initializeClassShareds_(((MetaclassNode) _acm.classNode()));
          return _systemMapping.singletonAtReference_ifAbsentPut_(_acm.reference().nonmeta(), new st.gravel.support.jvm.Block0<Object>() {

            @Override
            public Object value() {
              return _compilerTools.createSingletonForClass_(_acm.identityClass());
            }
          });
        }
        return SystemMappingUpdater.this;
      }
    });
    _compilerTools.resetCallsites();
    _systemMapping.namespaceGlobalsAndInitializersDo_(new st.gravel.support.jvm.Block2<Object, AbsoluteReference, SharedDeclarationNode>() {

      @Override
      public Object value_value_(final AbsoluteReference _reference, final SharedDeclarationNode _sharedVariable) {
        return _systemMapping.singletonAtReference_initialize_(_reference, _sharedVariable);
      }
    });
    for (final Reference _ref : _toInitialize) {
      _compilerTools.initializeClass_systemMapping_(((ClassMapping) _systemMapping.classMappingAtReference_(_ref)), _systemMapping);
    }
    _toInitialize = new java.util.ArrayList();
    return this;
  }

  public ClassPartMapping linkMethods_in_identityClass_to_isStatic_(final MethodNode[] _methods, final Class _javaClass, final Class _identityClass, final ClassPartMapping _cpm, final boolean _isStatic) {
    final ClassPartMapping[] _ecm;
    _ecm = new ClassPartMapping[1];
    _ecm[0] = _cpm;
    for (final MethodNode _m : _methods) {
      final String _fn;
      final java.lang.invoke.MethodHandle _methodHandle;
      final st.gravel.core.Symbol _selector;
      _selector = st.gravel.core.Symbol.value(_m.selector());
      _fn = _selectorConverter.selectorAsFunctionName_(_selector);
      _methodHandle = _compilerTools.methodHandleAt_numArgs_in_identityClass_isStatic_(_fn, _selector.numArgs(), _javaClass, _identityClass, _isStatic);
      _ecm[0] = _ecm[0].withMethodMapping_(((MethodMapping) MethodMapping.factory.methodNode_methodHandle_definingClass_(_m, _methodHandle, _javaClass)));
    }
    return _ecm[0];
  }

  public MethodNode[] localLinkMethods_instVars_ownerReference_(final MethodNode[] _methods, final BoundVariableDeclarationNode[] _instVars, final Reference _ownerReference) {
    final SelfNode[] _owner;
    _owner = new SelfNode[1];
    _owner[0] = SelfNode.factory.basicNew();
    return st.gravel.support.jvm.ArrayExtensions.collect_(_methods, ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() {

      @Override
      public MethodNode value_(final MethodNode _m) {
        final MethodNode _fieldAccessed;
        _fieldAccessed = ((MethodNode) SystemMappingUpdater.this.localLink_instVars_ownerReference_owner_(_m, _instVars, _ownerReference, _owner[0]));
        return (MethodNode) _fieldAccessed;
      }
    })));
  }

  public Node localLink_instVars_ownerReference_owner_(final Node _node, final BoundVariableDeclarationNode[] _instVars, final Reference _ownerReference, final Expression _owner) {
    final Node _intermediate;
    final Node _nonLocal;
    final Node _holderized;
    final Node _fieldAccessed;
    _intermediate = IntermediateNodeRewriter.factory.visit_(_node);
    _nonLocal = NonLocalReturnRewriter.factory.nlrMarker_(_compilerTools.nextNlrMarker()).visit_(_intermediate);
    _holderized = NonLocalTempWritesToHolderConverter.factory.visit_(_nonLocal);
    _fieldAccessed = VariableAccessToFieldAccessConverter.factory.instVars_owner_ownerReference_(_instVars, _owner, _ownerReference).visit_(_holderized);
    return _fieldAccessed;
  }

  public MethodNode[] methods_withExtraMethods_(final MethodNode[] _methods, final MethodNode[] _extraMethods) {
    final java.util.Set<String>[] _selectors;
    final List<MethodNode>[] _n;
    _n = new List[1];
    _selectors = new java.util.Set[1];
    _selectors[0] = new java.util.HashSet();
    _n[0] = new java.util.ArrayList();
    for (final MethodNode _each : _methods) {
      if (!_selectors[0].contains(_each.selector())) {
        _selectors[0].add(_each.selector());
        _n[0].add(_each);
      }
    }
    for (final MethodNode _each : _extraMethods) {
      if (!_selectors[0].contains(_each.selector())) {
        _selectors[0].add(_each.selector());
        _n[0].add(_each);
      }
    }
    return _n[0].toArray(new MethodNode[_n[0].size()]);
  }

  public SystemMappingUpdater setNamespaceNodes_(final Map<Reference, NamespaceNode> _aDictionary) {
    _systemMapping.setNamespaceNodes_(_aDictionary);
    return this;
  }

  public SystemMapping systemMapping() {
    return _systemMapping;
  }

  @Override
  public SystemMappingUpdater visitAddClassDiff_(final AddClassDiff _anAddClassDiff) {
    this.compileClassDescriptionNode_isStatic_(_anAddClassDiff.classNode(), (_anAddClassDiff.isStatic() || _isStaticOverride));
    this.compileClassDescriptionNode_(_anAddClassDiff.classNode().metaclassNode());
    _toInitialize.add(_anAddClassDiff.classNode().metaclassNode().reference());
    return this;
  }

  @Override
  public SystemMappingUpdater visitClassDiff_(final ClassDiff _anObject) {
    throw NodeVisitorError.factory.basicNew();
  }

  @Override
  public SystemMappingUpdater visitNewClassDiff_(final NewClassDiff _anObject) {
    return this.visitClassDiff_(_anObject);
  }

  @Override
  public SystemMappingUpdater visitRemoveClassDiff_(final RemoveClassDiff _anObject) {
    return this;
  }

  @Override
  public SystemMappingUpdater visitUpdateClassDiff_(final UpdateClassDiff _anUpdateClassDiff) {
    this.executeUpdateClassDescriptorDiff_reference_(_anUpdateClassDiff.thisDiff(), _anUpdateClassDiff.reference());
    this.executeUpdateClassDescriptorDiff_reference_(_anUpdateClassDiff.metaDiff(), _anUpdateClassDiff.reference().meta());
    return this;
  }

  @Override
  public SystemMappingUpdater visitWrapJavaclassDiff_(final WrapJavaclassDiff _aWrapJavaclassDiff) {
    final IdentityClassPartMapping _identityMapping;
    final ExtensionClassPartMapping _ecm;
    final MethodNode[] _allMethods;
    final MethodNode[] _extraMethods;
    final ClassDescriptionNode _ecdn;
    _identityMapping = IdentityClassPartMapping.factory.javaClass_isGenerated_(_compilerTools.findJavaClass_(_aWrapJavaclassDiff.classNode().javaClassPath()), false);
    _extraMethods = this.extraMethodsFor_(_aWrapJavaclassDiff.classNode());
    _ecdn = _aWrapJavaclassDiff.classNode().withExtraMethods_(_extraMethods);
    _allMethods = this.methods_withExtraMethods_(_aWrapJavaclassDiff.classNode().methods(), _extraMethods);
    _ecm = this.compileExtensionClassPartMapping_methods_identityClass_instVars_sourceFile_(_ecdn, _allMethods, _identityMapping.javaClass(), new BoundVariableDeclarationNode[] {}, _aWrapJavaclassDiff.classNode().findSourceFile());
    _systemMapping.addClassMapping_(ClassMapping.factory.identityMapping_extensions_instVarMappings_classNode_(_identityMapping, st.gravel.support.jvm.ArrayFactory.with_(_ecm), new java.util.HashMap<String, InstVarMapping>(), _aWrapJavaclassDiff.classNode()));
    this.compileClassDescriptionNode_(_aWrapJavaclassDiff.classNode().metaclassNode());
    _toInitialize.add(_aWrapJavaclassDiff.classNode().metaclassNode().reference());
    return this;
  }

  @Override
  public SystemMappingUpdater visit_(final ClassDiff _anObject) {
    _anObject.accept_(this);
    return this;
  }
}
TOP

Related Classes of st.gravel.support.compiler.ast.SystemMappingUpdater$SystemMappingUpdater_Factory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.