     }
 
     private func computeExplicitWidth() throws -> CGFloat? {
-        if !_evaluating.contains("width") {
+        if !_evaluating.contains("width"),
+            !_evaluating.contains("height") || !value(forSymbol: "width", dependsOn: "height") {
             return try cgFloatValue(forSymbol: "width")
         }
         if expressions["contentSize.width"] != nil, !_evaluating.contains("contentSize.width") {

        if let result = _widthDependsOnParent {
            return result
        }
        if value(forSymbol: "width", dependsOn: "parent.width") ||
            value(forSymbol: "left", dependsOn: "parent.width") {
            _widthDependsOnParent = true
            return true
        }

    }

    private func computeExplicitHeight() throws -> CGFloat? {
        if !_evaluating.contains("height"),
            !_evaluating.contains("width") || !value(forSymbol: "height", dependsOn: "width") {
            return try cgFloatValue(forSymbol: "height")
        }
        if expressions["contentSize.height"] != nil, !_evaluating.contains("contentSize.height") {
