Package st.gravel.support.compiler.ast

Examples of st.gravel.support.compiler.ast.Reference


    return site;
  }

  public static CallSite constructorBootstrap(Lookup lookup, String selector,
      MethodType type, String referenceString) throws Throwable {
    Reference reference = Reference.factory.value_(referenceString);
    Constructor constructor = ImageBootstrapper.systemMapping.classMappingAtReference_(reference).identityClass().getConstructor();
    MethodHandle constructorHandle = lookup.unreflectConstructor(constructor);
    return new ConstantCallSite(constructorHandle.asType(type));
  }
View Full Code Here


  public MethodHandle lookupMethod(Class receiverClass) {
    return lookupMethod(receiverClass, selector);
  }

  public MethodHandle lookupMethod(Class receiverClass, String selector) {
    Reference reference = Reference.factory.value_(lookupStart);
    AbstractMethodMapping mapping = ImageBootstrapper.systemMapping
        .superMethodMappingFor_methodName_(reference, selector);
    if (mapping == null) {
      if (selector.equals("doesNotUnderstand_"))
        throw new RuntimeException("Can't find DNU method");
View Full Code Here

        });
    return set;
  }

  public ClassDescriptionMirror superclass() {
    Reference superclassReference = ImageBootstrapper.systemMapping
        .classMappingAtReference_(reference).superclassReference();
    if (superclassReference == null)
      return null;
    return ClassDescriptionMirror.forReference(superclassReference);
  }
View Full Code Here

        final List<ClassDiff> _todo;
        _todo = st.gravel.support.jvm.OrderedCollectionExtensions.select_(_unordered[0], new st.gravel.support.jvm.Predicate1<ClassDiff>() {

          @Override
          public boolean value_(final ClassDiff _elem) {
            final Reference _superclassReference;
            _superclassReference = _elem.superclassReference();
            return (_superclassReference == null) || _start[0].includesReference_(_superclassReference);
          }
        });
        if (_todo.size() == 0) {
          throw new RuntimeException("Prerequisite error; trying to load classes with unknown superclass");
        }
        _unordered[0].removeAll(_todo);
        for (final ClassDiff _each : _todo) {
          if (_each.isNewClassDiff()) {
            _start[0] = _start[0].withClassDescriptionNode_(((NewClassDiff) _each).classNode());
            if (_each.isStatic()) {
              Reference _nextRef;
              _nextRef = _each.superclassReference();
              boolean _temp2 = false;
              while (!_temp2) {
                _temp2 = _nextRef == null;
                if (!_temp2) {
                  final ClassDiff _superNode;
                  final Reference _ref;
                  _ref = _nextRef;
                  _superNode = ((ClassDiff) st.gravel.support.jvm.OrderedCollectionExtensions.detect_ifNone_(_classDiffs[0], new st.gravel.support.jvm.Predicate1<ClassDiff>() {

                    @Override
                    public boolean value_(final ClassDiff _cd) {
View Full Code Here

  }

  public SystemMapping buildSubclassMappingsCache() {
    _subclassMappingsCache = new java.util.HashMap<Reference, java.util.Set<AbstractClassMapping>>();
    for (final AbstractClassMapping _each : _classMappingsByReference.values()) {
      final Reference _scr;
      _scr = _each.superclassReference();
      if (_scr != null) {
        java.util.Set<AbstractClassMapping> _temp1 = _subclassMappingsCache.get(_scr);
        if (_temp1 == null) {
          java.util.Set<AbstractClassMapping> _temp2 = new java.util.HashSet();
View Full Code Here

  public AbstractMethodMapping methodMappingFrom_selector_(final ClassMapping _classMapping, final st.gravel.core.Symbol _sel) {
    return _classMapping.methodMappingAt_ifAbsent_(_sel, ((st.gravel.support.jvm.Block0<AbstractMethodMapping>) (new st.gravel.support.jvm.Block0<AbstractMethodMapping>() {

      @Override
      public AbstractMethodMapping value() {
        final Reference _superclassReference;
        AbstractMethodMapping _mapping;
        _superclassReference = _classMapping.superclassReferenceForMethodLookup();
        if (_superclassReference == null) {
          _mapping = null;
        } else {
View Full Code Here

    }
  }

  public SystemMapping namespaceGlobalsAndInitializersDo_(final st.gravel.support.jvm.Block2<Object, AbsoluteReference, SharedDeclarationNode> _aBlock) {
    for (final Map.Entry<Reference, NamespaceNode> _temp1 : _systemNode.namespaceNodes().entrySet()) {
      Reference _reference = _temp1.getKey();
      NamespaceNode _namespaceNode = _temp1.getValue();
      for (final SharedDeclarationNode _sharedVariable : _namespaceNode.sharedVariables()) {
        _aBlock.value_value_(((AbsoluteReference) _reference).$slash$(st.gravel.core.Symbol.value(_sharedVariable.name())), _sharedVariable);
      }
    }
View Full Code Here

  }

  public AbstractMethodMapping superMethodMappingFor_methodName_(final Reference _aReference, final String _methodName) {
    final st.gravel.core.Symbol _sel;
    final ClassMapping _classMapping;
    final Reference _superclassReference;
    _classMapping = ((ClassMapping) this.classMappingAtReference_(_aReference));
    _superclassReference = _classMapping.superclassReference();
    if (_superclassReference == null) {
      return null;
    }
View Full Code Here

    this.packageClassNodesDo_(new st.gravel.support.jvm.Block1<Object, ClassNode>() {

      @Override
      public Object value_(final ClassNode _classNode) {
        if (!_classNode.isExtension()) {
          final Reference _reference;
          _reference = _classNode.reference();
          if (_classNodes[0].containsKey(_reference)) {
            throw new RuntimeException("Class " + _reference.toString() + " defined twice");
          }
          return _classNodes[0].put(_reference, _classNode);
        }
        return PackageNodeMerger.this;
      }
    });
    this.packageClassNodesDo_(new st.gravel.support.jvm.Block1<Object, ClassNode>() {

      @Override
      public Object value_(final ClassNode _classNode) {
        if (_classNode.isExtension()) {
          final Reference _reference;
          _reference = _classNode.reference();
          if (!_classNodes[0].containsKey(_reference)) {
            throw new RuntimeException("Can\'t extend Class " + _reference.toString() + "; not defined yet");
          }
          return _classNodes[0].put(_reference, _classNodes[0].get(_reference).mergedWithExtension_(_classNode));
        }
        return PackageNodeMerger.this;
      }
    });
    _classDescriptionNodes[0] = new java.util.HashMap<Reference, ClassDescriptionNode>();
    for (final ClassNode _classNode : _classNodes[0].values()) {
      _classDescriptionNodes[0].put(_classNode.reference(), _classNode);
      _classDescriptionNodes[0].put(_classNode.metaclassNode().reference(), _classNode.metaclassNode());
    }
    this.packageNamespaceNodesDo_(new st.gravel.support.jvm.Block1<Object, NamespaceNode>() {

      @Override
      public Object value_(final NamespaceNode _namespaceNode) {
        final Reference _reference;
        _reference = _namespaceNode.reference();
        if (_namespaceNodes[0].containsKey(_reference)) {
          return _namespaceNodes[0].put(_reference, _namespaceNode.mergeWith_(_namespaceNodes[0].get(_reference)));
        } else {
          return _namespaceNodes[0].put(_reference, _namespaceNode);
View Full Code Here

  public Reference reference() {
    return _classNode.reference();
  }

  public AbstractClassMapping superclassMappingIn_(final SystemMapping _aSystemMapping) {
    final Reference _superclassReference;
    _superclassReference = this.superclassReference();
    if (_superclassReference == null) {
      return null;
    }
    return _aSystemMapping.classMappingAtReference_(_superclassReference);
View Full Code Here

TOP

Related Classes of st.gravel.support.compiler.ast.Reference

Copyright © 2018 www.massapicom. 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.