Search in sources :

Example 1 with ExtensionClassPartMapping

use of st.gravel.support.compiler.ast.ExtensionClassPartMapping in project gravel by gravel-st.

the class ClassMapping method withoutMethodMapping_.

public ClassMapping withoutMethodMapping_(final String _aSelector) {
    ClassMapping _temp1 = this.copy();
    _temp1.pvtSetIdentityMapping_(_identityMapping.withoutMethodMapping_(_aSelector));
    return _temp1.pvtSetExtensions_(st.gravel.support.jvm.ArrayExtensions.collect_(_extensions, ((st.gravel.support.jvm.Block1<ExtensionClassPartMapping, ExtensionClassPartMapping>) (new st.gravel.support.jvm.Block1<ExtensionClassPartMapping, ExtensionClassPartMapping>() {

        @Override
        public ExtensionClassPartMapping value_(final ExtensionClassPartMapping _each) {
            return (ExtensionClassPartMapping) _each.withoutMethodMapping_(_aSelector);
        }
    }))));
}
Also used : AbstractClassMapping(st.gravel.support.compiler.ast.AbstractClassMapping) ExtensionClassPartMapping(st.gravel.support.compiler.ast.ExtensionClassPartMapping)

Example 2 with ExtensionClassPartMapping

use of st.gravel.support.compiler.ast.ExtensionClassPartMapping in project gravel by gravel-st.

the class SystemMappingUpdater method compileClassDescriptionNodeNonStatic_.

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;
}
Also used : UnaryMethodNode(st.gravel.support.compiler.ast.UnaryMethodNode) MethodNode(st.gravel.support.compiler.ast.MethodNode) HashMap(java.util.HashMap) ExtensionClassPartMapping(st.gravel.support.compiler.ast.ExtensionClassPartMapping) JVMClass(st.gravel.support.compiler.jvm.JVMClass) IdentityClassPartMapping(st.gravel.support.compiler.ast.IdentityClassPartMapping) ClassDescriptionNode(st.gravel.support.compiler.ast.ClassDescriptionNode)

Example 3 with ExtensionClassPartMapping

use of st.gravel.support.compiler.ast.ExtensionClassPartMapping in project gravel by gravel-st.

the class SystemMappingUpdater method executeUpdateClassDescriptorDiff_reference_.

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;
}
Also used : ClassMapping(st.gravel.support.compiler.ast.ClassMapping) AbstractClassMapping(st.gravel.support.compiler.ast.AbstractClassMapping) UnaryMethodNode(st.gravel.support.compiler.ast.UnaryMethodNode) MethodNode(st.gravel.support.compiler.ast.MethodNode) ExtensionClassPartMapping(st.gravel.support.compiler.ast.ExtensionClassPartMapping) ClassDescriptionNode(st.gravel.support.compiler.ast.ClassDescriptionNode)

Example 4 with ExtensionClassPartMapping

use of st.gravel.support.compiler.ast.ExtensionClassPartMapping in project gravel by gravel-st.

the class SystemMappingUpdater method compileClassDescriptionNodeStatic_.

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;
}
Also used : UnaryMethodNode(st.gravel.support.compiler.ast.UnaryMethodNode) MethodNode(st.gravel.support.compiler.ast.MethodNode) HashMap(java.util.HashMap) ExtensionClassPartMapping(st.gravel.support.compiler.ast.ExtensionClassPartMapping) JVMClass(st.gravel.support.compiler.jvm.JVMClass) IdentityClassPartMapping(st.gravel.support.compiler.ast.IdentityClassPartMapping) ClassDescriptionNode(st.gravel.support.compiler.ast.ClassDescriptionNode)

Example 5 with ExtensionClassPartMapping

use of st.gravel.support.compiler.ast.ExtensionClassPartMapping in project gravel by gravel-st.

the class SystemMappingUpdater method visitWrapJavaclassDiff_.

@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;
}
Also used : UnaryMethodNode(st.gravel.support.compiler.ast.UnaryMethodNode) MethodNode(st.gravel.support.compiler.ast.MethodNode) HashMap(java.util.HashMap) ExtensionClassPartMapping(st.gravel.support.compiler.ast.ExtensionClassPartMapping) IdentityClassPartMapping(st.gravel.support.compiler.ast.IdentityClassPartMapping) ClassDescriptionNode(st.gravel.support.compiler.ast.ClassDescriptionNode) BoundVariableDeclarationNode(st.gravel.support.compiler.ast.BoundVariableDeclarationNode)

Aggregations

ExtensionClassPartMapping (st.gravel.support.compiler.ast.ExtensionClassPartMapping)6 ClassDescriptionNode (st.gravel.support.compiler.ast.ClassDescriptionNode)4 MethodNode (st.gravel.support.compiler.ast.MethodNode)4 UnaryMethodNode (st.gravel.support.compiler.ast.UnaryMethodNode)4 HashMap (java.util.HashMap)3 IdentityClassPartMapping (st.gravel.support.compiler.ast.IdentityClassPartMapping)3 AbstractClassMapping (st.gravel.support.compiler.ast.AbstractClassMapping)2 JVMClass (st.gravel.support.compiler.jvm.JVMClass)2 AbstractMethodMapping (st.gravel.support.compiler.ast.AbstractMethodMapping)1 BoundVariableDeclarationNode (st.gravel.support.compiler.ast.BoundVariableDeclarationNode)1 ClassMapping (st.gravel.support.compiler.ast.ClassMapping)1