This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new 15c770367 add missing parent/child relationships and better 
start/end/line/column positions to CSS nodes
15c770367 is described below

commit 15c7703671d804eb29c91f50806c4ce0d1cb37b6
Author: Josh Tynjala <[email protected]>
AuthorDate: Fri May 10 09:31:23 2024 -0700

    add missing parent/child relationships and better start/end/line/column 
positions to CSS nodes
---
 .../compiler/internal/css/CSSCombinator.java       | 13 +++++
 .../royale/compiler/internal/css/CSSFontFace.java  | 66 ++++++++++++----------
 .../royale/compiler/internal/css/CSSProperty.java  |  3 +
 .../royale/compiler/internal/css/CSSRule.java      | 13 +++++
 .../royale/compiler/internal/css/CSSSelector.java  | 41 ++++++++++++++
 5 files changed, 105 insertions(+), 31 deletions(-)

diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
index f3d190363..80fed431b 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
@@ -38,6 +38,11 @@ public class CSSCombinator extends CSSNodeBase implements 
ICSSCombinator
         assert type != null : "Combinator type can't be null.";
         this.selector = selector;
         this.type = type;
+
+        selector.setParent(this);
+        children.add(selector);
+        // TODO: include the operator
+        span(selector);
     }
 
     private final CSSSelector selector;
@@ -54,4 +59,12 @@ public class CSSCombinator extends CSSNodeBase implements 
ICSSCombinator
     {
         return type;
     }
+
+    @Override
+    public String toString()
+    {
+        final StringBuilder result = new StringBuilder();
+        
result.append(getSelector().toString()).append(getCombinatorType().text);
+        return result.toString();
+    }
 }
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
index 296cfa2b2..4a1543bf9 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
@@ -28,7 +28,6 @@ import org.apache.royale.compiler.common.ISourceLocation;
 import org.apache.royale.compiler.common.SourceLocation;
 import org.apache.royale.compiler.css.FontFaceSourceType;
 import org.apache.royale.compiler.css.ICSSFontFace;
-import org.apache.royale.compiler.css.ICSSProperty;
 import org.apache.royale.compiler.css.ICSSPropertyValue;
 import org.apache.royale.compiler.problems.CSSRequiredDescriptorProblem;
 import org.apache.royale.compiler.problems.ICompilerProblem;
@@ -62,38 +61,43 @@ public class CSSFontFace extends CSSNodeBase implements 
ICSSFontFace
         ICSSPropertyValue embedAsCFFValue = null;
         ICSSPropertyValue advancedAAValue = null;
 
-        for (final ICSSProperty property : properties)
+        if (properties != null)
         {
-            final String name = property.getName();
-            final ICSSPropertyValue value = property.getValue();
-            if (name.equals("src"))
+            children.addAll(properties);
+            for (final CSSProperty property : properties)
             {
-                sources.add(value);
-                srcValue = value;
-            }
-            else if (name.equals("fontFamily"))
-            {
-                fontFamilyValue = value;
-            }
-            else if (name.equals("fontStyle"))
-            {
-                fontStyleValue = value;
-            }
-            else if (name.equals("fontWeight"))
-            {
-                fontWeightValue = value;
-            }
-            else if (name.equals("embedAsCFF"))
-            {
-                embedAsCFFValue = value;
-            }
-            else if (name.equals("advancedAntiAliasing"))
-            {
-                advancedAAValue = value;
-            }
-            else
-            {
-                // Ignore unknown properties.
+                property.setParent(this);
+                final String name = property.getName();
+                final ICSSPropertyValue value = property.getValue();
+                if (name.equals("src"))
+                {
+                    sources.add(value);
+                    srcValue = value;
+                }
+                else if (name.equals("fontFamily"))
+                {
+                    fontFamilyValue = value;
+                }
+                else if (name.equals("fontStyle"))
+                {
+                    fontStyleValue = value;
+                }
+                else if (name.equals("fontWeight"))
+                {
+                    fontWeightValue = value;
+                }
+                else if (name.equals("embedAsCFF"))
+                {
+                    embedAsCFFValue = value;
+                }
+                else if (name.equals("advancedAntiAliasing"))
+                {
+                    advancedAAValue = value;
+                }
+                else
+                {
+                    // Ignore unknown properties.
+                }
             }
         }
 
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
index 0f4c0a2cc..488a09813 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
@@ -36,6 +36,9 @@ public class CSSProperty extends CSSNodeBase implements 
ICSSProperty
         this.rawName = name;
         this.normalizedName = normalize(name);
         this.value = value;
+
+        value.setParent(this);
+        children.add(value);
     }
 
     private final String normalizedName;
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java
index 46cc36098..91acff896 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java
@@ -75,6 +75,19 @@ public class CSSRule extends CSSNodeBase implements ICSSRule
             for (CSSMediaQueryCondition mediaQuery : mediaQueries)
             {
                 mediaQuery.setParent(this);
+                if (mediaQuery.getStart() < getStart())
+                {
+                    setStart(mediaQuery.getStart());
+                }
+                if (mediaQuery.getLine() < getLine())
+                {
+                    setLine(mediaQuery.getLine());
+                    setColumn(mediaQuery.getColumn());
+                }
+                else if (mediaQuery.getLine() == getLine() && 
mediaQuery.getColumn() > getColumn())
+                {
+                    setColumn(mediaQuery.getColumn());
+                }
             }
         }
         if (properties != null)
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java
index 6efc239ef..7b4e857bc 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java
@@ -55,10 +55,51 @@ public class CSSSelector extends CSSNodeBase implements 
ICSSSelector
         this.namespacePrefix = namespacePrefix;
         this.elementName = elementName;
 
+        if (combinator != null)
+        {
+            combinator.setParent(this);
+            this.children.add(combinator);
+            if (combinator.getStart() < getStart())
+            {
+                setStart(combinator.getStart());
+            }
+            if (combinator.getLine() < getLine())
+            {
+                setLine(combinator.getLine());
+                setColumn(combinator.getColumn());
+            }
+            else if (combinator.getLine() == getLine() && 
combinator.getColumn() > getColumn())
+            {
+                setColumn(combinator.getColumn());
+            }
+        }
+
         if (conditions == null || conditions.isEmpty())
+        {
             this.conditions = ImmutableList.of();
+        }
         else
+        {
             this.conditions = new 
ImmutableList.Builder<ICSSSelectorCondition>().addAll(conditions).build();
+            for (CSSSelectorCondition condition : conditions)
+            {
+                condition.setParent(this);
+                if (condition.getEnd() > getEnd())
+                {
+                    setEnd(condition.getEnd());
+                }
+                if (condition.getEndLine() > getEndLine())
+                {
+                    setEndLine(condition.getEndLine());
+                    setEndColumn(condition.getEndColumn());
+                }
+                else if (condition.getEndLine() == getEndLine() && 
condition.getEndColumn() > getEndColumn())
+                {
+                    setEndColumn(condition.getEndColumn());
+                }
+            }
+            this.children.addAll(conditions);
+        }
 
     }
 

Reply via email to