Hi Alex,

the problem is only with the latest (caching) . The other one works ok.
thanks

2018-03-30 10:06 GMT+02:00 Carlos Rovira <[email protected]>:

> Hi Alex,
>
> the two latest commits in compiler is making projects not compile (at
> least in Jewel branch). I'll reset my index below this two commits until
> you get that solved
>
> thanks
>
>
>
> 2018-03-30 9:08 GMT+02:00 <[email protected]>:
>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> aharui pushed a commit to branch develop
>> in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
>>
>> commit 52509ab663ffda8808eca6598eef59275e6ee37c
>> Author: Alex Harui <[email protected]>
>> AuthorDate: Fri Mar 30 00:01:44 2018 -0700
>>
>>     try caching some other things to speed up the compiler
>> ---
>>  .../internal/definitions/ClassDefinitionBase.java  | 56
>> ++++++++++++----------
>>  .../internal/definitions/DefinitionBase.java       |  8 +++-
>>  2 files changed, 39 insertions(+), 25 deletions(-)
>>
>> diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal
>> /definitions/ClassDefinitionBase.java b/compiler/src/main/java/org/a
>> pache/royale/compiler/internal/definitions/ClassDefinitionBase.java
>> index de73e9b..de8cfe1 100644
>> --- a/compiler/src/main/java/org/apache/royale/compiler/internal
>> /definitions/ClassDefinitionBase.java
>> +++ b/compiler/src/main/java/org/apache/royale/compiler/internal
>> /definitions/ClassDefinitionBase.java
>> @@ -414,6 +414,8 @@ public abstract class ClassDefinitionBase extends
>> TypeDefinitionBase implements
>>          return new InterfaceDefinition.InterfaceIterator(this, project,
>> null);
>>      }
>>
>> +    private ArrayList<IDefinition> baseDefinitions = null;
>> +
>>      @Override
>>      public boolean isInstanceOf(final ITypeDefinition type,
>> ICompilerProject project)
>>      {
>> @@ -423,35 +425,41 @@ public abstract class ClassDefinitionBase extends
>> TypeDefinitionBase implements
>>
>>          if (type instanceof IClassDefinition)
>>          {
>> -            // We're trying to determine whether this class
>> -            // is derived from a specified class ('type').
>> -            // Iterate the superclass chain looking for 'type'.
>> -            Iterator<IClassDefinition> iter = classIterator(project,
>> false);
>> -            while (iter.hasNext())
>> -            {
>> -                IClassDefinition cls = iter.next();
>> -                if (cls == type)
>> -                    return true;
>> -            }
>> -            return false;
>> +               if (baseDefinitions == null)
>> +               {
>> +                       baseDefinitions = new ArrayList<IDefinition>();
>> +
>> +                   // We're trying to determine whether this class
>> +                   // is derived from a specified class ('type').
>> +                   // Iterate the superclass chain looking for 'type'.
>> +                   Iterator<IClassDefinition> iter =
>> classIterator(project, false);
>> +                   while (iter.hasNext())
>> +                   {
>> +                       IClassDefinition cls = iter.next();
>> +                       baseDefinitions.add(cls);
>> +                   }
>> +               }
>>          }
>>          else if (type instanceof IInterfaceDefinition)
>>          {
>> -            // We're trying to determine whether this class
>> -            // implements a specified interface ('type').
>> -            // Iterate all of the interfaces that this class implements,
>> -            // looking for 'type'.
>> -            Iterator<IInterfaceDefinition> iter =
>> interfaceIterator(project);
>> -            while (iter.hasNext())
>> -            {
>> -                IInterfaceDefinition intf = iter.next();
>> -                if (intf == type)
>> -                    return true;
>> -            }
>> -            return false;
>> +               if (baseDefinitions == null)
>> +               {
>> +                       baseDefinitions = new ArrayList<IDefinition>();
>> +
>> +                   // We're trying to determine whether this class
>> +                   // implements a specified interface ('type').
>> +                   // Iterate all of the interfaces that this class
>> implements,
>> +                   // looking for 'type'.
>> +                   Iterator<IInterfaceDefinition> iter =
>> interfaceIterator(project);
>> +                   while (iter.hasNext())
>> +                   {
>> +                       IInterfaceDefinition intf = iter.next();
>> +                       baseDefinitions.add(intf);
>> +                   }
>> +               }
>>          }
>>
>> -        return false;
>> +       return baseDefinitions.contains(type);
>>      }
>>
>>      @Override
>> diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal
>> /definitions/DefinitionBase.java b/compiler/src/main/java/org/a
>> pache/royale/compiler/internal/definitions/DefinitionBase.java
>> index 61fb92a..0626789 100644
>> --- a/compiler/src/main/java/org/apache/royale/compiler/internal
>> /definitions/DefinitionBase.java
>> +++ b/compiler/src/main/java/org/apache/royale/compiler/internal
>> /definitions/DefinitionBase.java
>> @@ -166,6 +166,8 @@ public abstract class DefinitionBase implements
>> IDocumentableDefinition, IDefini
>>
>>      private int absoluteNameStart = 0;
>>      private int absoluteNameEnd = 0;
>> +
>> +    private IDefinition parentDef = null;
>>
>>      /**
>>       * Called by {@code MXMLScopeBuilder} when building definitions from
>> @@ -240,6 +242,9 @@ public abstract class DefinitionBase implements
>> IDocumentableDefinition, IDefini
>>      @Override
>>      public IDefinition getParent()
>>      {
>> +       if (parentDef != null)
>> +               return parentDef;
>> +
>>          IASScope scope = getContainingScope();
>>
>>          // Walk up the scope chain until we find a scope that has
>> @@ -251,7 +256,8 @@ public abstract class DefinitionBase implements
>> IDocumentableDefinition, IDefini
>>          while ((scope != null) && (scope.getDefinition() == null))
>>              scope = scope.getContainingScope();
>>
>> -        return scope != null ? scope.getDefinition() : null;
>> +        parentDef = scope != null ? scope.getDefinition() : null;
>> +        return parentDef;
>>      }
>>
>>      @Override
>>
>> --
>> To stop receiving notification emails like this one, please contact
>> [email protected].
>>
>
>
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>
>


-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to