Here's what i've come up with so far: 
     
            BindingResolver resolver = new
    DefaultBindingResolver(sourceModule, sourceModule.getOwner()); 
            IType type = sourceModule.getType(currentClass.getName()); 
            PHPClassType evaluatedType =
    PHPClassType.fromIType(type);                         
            TypeBinding binding = new TypeBinding(resolver,
    evaluatedType, type); 
            ITypeBinding typeBinding =
    Bindings.findTypeInHierarchy(binding,
    "Symfony\\Component\\DependencyInjection\\ContainerAwareInterface"); 
     
     
    However, in the call to findTypeInHierarchy(), i'm getting a
    ModelException: 
     
    org.eclipse.dltk.core.ModelException: UserController [in
    UserController.php [in Acme/DemoBundle/Controller [in src [in
    Test]]]] does not exist 
     
     
    UserController is the class being indexed and the above 5 lines of
    code are being called inside the endvisit(ModuleDeclaration) of my
    IndexingVisitor. 
     
     
    The Type definitely exists. Any ideas why i'm getting this
    Exception?  
     
     
    thanks again, 
     
     
    -robert 
     
     
     
     
     
    On 10/27/11 4:01 PM, Robert Gruendler wrote:
    
      
      Hi, 
       
      findTypeInHierarchy() expectes an ITypeBinding as the first
      parameter. In the IndexingVisitorExtension 
      i only have AstNodes from the package org.eclipse.php.internal.core.compiler.ast.nodes.*
      available. 
       
      It looks like the TypeDeclarations from the org.eclipse.php.internal.core.ast.nodes.*
      package 
      have a method resolveTypeBinding() which returns an ITypeBinding. 
       
      This raises a more general question: What's the difference between
      the AstNode classes in the 2 packages: 
       
      org.eclipse.php.internal.core.compiler.ast.nodes.* 
      org.eclipse.php.internal.core.ast.nodes.* 
       
      And if i'm inside a PHPASTVisitor, can i convert the classes from
      the org.eclipse.php.internal.core.compiler.ast.nodes somehow 
      to the corresponding org.eclipse.php.internal.core.ast.nodes.*
      class? 
       
       
      regards 
       
      -robert 
       
       
      ps: i've tried to search the pdt source for any examples of
      findTypeInHierarchy(), but it looks like it's not 
      being used anywhere. 
       
       
       
      On 10/27/11 2:33 PM, Roy Ganor wrote:
      
        Hi,
Try using org.eclipse.php.internal.core.ast.nodes.Bindings.findTypeInHierarchy(ITypeBinding, String)
Roy
-----Original Message-----
From: pdt-dev-bounces@xxxxxxxxxxx [mailto:pdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Robert Gruendler
Sent: Thursday, October 27, 2011 12:36 PM
To: pdt-dev@xxxxxxxxxxx
Subject: [pdt-dev] Check if any class in the superclasshierarchy implements an interface
Hi,
i'm trying to check in my IndexingVisitorExtension if a visited class
implements a certain interface.
The ClassDeclaration's "getSuperclasses()" method seemed to be a way to 
do this,
but as it turns out it only evaluates the direct superclass and the 
direct implemented
interfaces.
So i'm wondering if i somehow can walk through the complete superclass 
hierarchy during
indexing of a php class?
regards
-robert
_______________________________________________
pdt-dev mailing list
pdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/pdt-dev
_______________________________________________
pdt-dev mailing list
pdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/pdt-dev
 
       
       
     
     
  
 |