Package org.eclipse.imp.pdb.facts

Examples of org.eclipse.imp.pdb.facts.ISourceLocation


    super(typeStore, collectBindings);
  }
 
  public void postVisit(ASTNode node) {
    setAnnotation("src", getSourceLocation(node));
    ISourceLocation decl = resolveBinding(node);
    if (!decl.getURI().getScheme().equals("unknown")) {
      setAnnotation("decl", decl);
    }
    setAnnotation("typ", resolveType(node));
  }
View Full Code Here


        }
      }
      return pt;
    }
    catch (ParseError pe) {
      ISourceLocation errorLoc = vf.sourceLocation(pe.getLocation(), pe.getOffset(), pe.getLength(), pe.getBeginLine() + 1, pe.getEndLine() + 1, pe.getBeginColumn(), pe.getEndColumn());
      throw RascalRuntimeException.parseError(errorLoc, stacktrace);
    }
    catch (UndeclaredNonTerminalException e){
      throw new CompilerError("Undeclared non-terminal: " + e.getName() + ", " + e.getClassName());
    }
View Full Code Here

//        sym = SymbolAdapter.delabel(sym);
//        prod = ProductionAdapter.setDefined(prod, vf.constructor(Factory.Symbol_Label, vf.string("$parsed"), sym));
//        return TreeAdapter.setProduction(TreeAdapter.setArg(tree, "parts", fragment), prod);
      }
      catch (ParseError e) {
        ISourceLocation loc = TreeAdapter.getLocation(tree);
        ISourceLocation src = vf.sourceLocation(loc, loc.getOffset() + e.getOffset(), loc.getLength(), loc.getBeginLine() + e.getBeginLine() - 1, loc.getEndLine() + e.getEndLine() - 1, loc.getBeginColumn() + e.getBeginColumn(), loc.getBeginColumn() + e.getEndColumn());
        rex.getStdErr().println("***** WARNING: parseFragment, parse error at " + src);
        //getMonitor().warning("parse error in concrete syntax", src);
        return tree.asAnnotatable().setAnnotation("parseError", src);
      }
//      catch (StaticError e) {
View Full Code Here

  }

  public void test(String moduleName, int nTests) {
    testResultListener.start(nTests);
    IValueFactory vf = eval.getValueFactory();
    ISourceLocation src = null;
    try {
      src = vf.sourceLocation("rascal", "", moduleName.replaceAll("::""/") + ".rsc");
      System.err.println("TestExecutor.test: testing " + moduleName + ", " + nTests + " tests");
      eval.call("executeTests", src);
      //System.err.println("TestExecutor.test: testing " + moduleName + " ... done");
View Full Code Here

        return resolveBinding(((Type) node).resolveBinding());
      } else if (node instanceof TypeParameter) {
        return resolveBinding(((TypeParameter) node).resolveBinding());
      } else if (node instanceof VariableDeclaration) {
      VariableDeclaration n = (VariableDeclaration) node;
        ISourceLocation result = resolveBinding(n.resolveBinding());
        // Have to move towards parent to make the binding unique
        if (result.getScheme() == "unresolved") {
          result = resolveBinding(n.getParent(), n);
        }
        return result;
      } else if (node instanceof ConstructorInvocation) {
        return resolveBinding(((ConstructorInvocation) node).resolveConstructorBinding());
View Full Code Here

    }
    return makeBinding("unknown", null, null);
  }
 
  private ISourceLocation resolveBinding(ASTNode parentNode, VariableDeclaration thisNode) {
    ISourceLocation parentBinding = resolveBinding(parentNode);
    // Something has to declare it!!!
    while(parentBinding.getScheme().equals("unknown") || parentBinding.getScheme().equals("unresolved")) {
      if (parentNode == null) {
        //truely unresolved/unknown
        return makeBinding("unresolved", null, null);
      }
      parentNode = parentNode.getParent();
      parentBinding = resolveBinding(parentNode);
    }

    // TODO: @ashimshahi please check this additional null check and the way we return an unresolved binding here
    IVariableBinding resolvedBinding = thisNode.resolveBinding();
    if (resolvedBinding == null) {
      return makeBinding("unresolved", null, null);
    }
   
    String key = resolvedBinding.getKey();
    // Binding keys for initializers are not unique so we always force them to be recomputed
    if (!(parentNode instanceof Initializer)) {
      if (EclipseJavaCompiler.cache.containsKey(key)) {
        return EclipseJavaCompiler.cache.get(key);
      }
    }
    String qualifiedName = parentBinding.getPath();
    String[] bindingKeys = key.split("#");
   
    if (bindingKeys.length > 2) {
      // scoped variable that may have the same name as some other scoped variable
      for (int i = 1; i < bindingKeys.length - 1; i++) {
        if (!qualifiedName.endsWith("/"))
          qualifiedName += "/";
        qualifiedName += "scope("+bindingKeys[i]+")/";
      }
    }
   
    // FIXME: May not be variable only!!!
    ISourceLocation childBinding = makeBinding("java+variable", null, qualifiedName.concat(thisNode.getName().getIdentifier()));
    EclipseJavaCompiler.cache.put(key, childBinding);
    return childBinding;
  }
View Full Code Here

    EclipseJavaCompiler.cache.put(key, childBinding);
    return childBinding;
  }
 
  private ISourceLocation resolveQualifiedName(QualifiedName node) {
    ISourceLocation parent = resolveBinding(node.getQualifier().resolveTypeBinding());
    ISourceLocation name = resolveBinding(node.getName());
   
    if (parent.getScheme().equals("java+array") && name.getScheme().equals("unresolved")) {
      return makeBinding("java+field", null, resolveBinding(node.getQualifier()).getPath() + "/" + node.getName().getIdentifier());
    }
   
    return name;
  }
View Full Code Here

  private ISourceLocation resolveInitializer(Initializer node) {
    if (initializerLookUp.containsKey(node)) {
      return initializerLookUp.get(node);
    }
    int initCounter = 1;
    ISourceLocation parent = resolveBinding(node.getParent());
    if (initializerCounter.containsKey(parent)) {
        initCounter = initializerCounter.get(parent) + 1;
      }
    initializerCounter.put(parent, initCounter);
    String key = "";
    for (String storedKey: EclipseJavaCompiler.cache.keySet()) {
      if (EclipseJavaCompiler.cache.get(storedKey).equals(parent)) {
        key = storedKey;
        break;
      }
    }
    key += "$initializer" + initCounter;
    ISourceLocation result = makeBinding("java+initializer", null, parent.getPath() + "$initializer" + initCounter);
    EclipseJavaCompiler.cache.put(key, result);
    initializerLookUp.put(node, result);
    return result;
  }
View Full Code Here

  }
 
  public IConstructor resolveType(IBinding binding, boolean isDeclaration) {
    IConstructor result = unresolvedSym();
    if (binding != null) {
      ISourceLocation uri = resolveBinding(binding);
        if (binding instanceof ITypeBinding) {
          return computeTypeSymbol(uri, (ITypeBinding) binding, isDeclaration);
        } else if (binding instanceof IMethodBinding) {
          return computeMethodTypeSymbol(uri, (IMethodBinding) binding, isDeclaration);
        } else if (binding instanceof IVariableBinding) {
View Full Code Here

    if (binding.isConstructor()) {
        scheme = "java+constructor";
      } else {
        scheme = "java+method";
      }
    ISourceLocation result = makeBinding(scheme, null, signature);
    EclipseJavaCompiler.cache.put(binding.getKey(), result);
    return result;
  }
View Full Code Here

TOP

Related Classes of org.eclipse.imp.pdb.facts.ISourceLocation

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.