package com.github.sommeri.less4j.utils.debugonly;
import java.util.ArrayList;
import java.util.List;
import com.github.sommeri.less4j.core.compiler.scopes.FullMixinDefinition;
import com.github.sommeri.less4j.core.compiler.scopes.IScope;
//marked deprecated so I get a warning if it is referenced somewhere
@Deprecated
public class AdHocScopeChecker {
public AdHocScopeChecker() {
}
public void validate(IScope scope) {
check(scope);
List<IScope> childs = new ArrayList<IScope>(scope.getChilds());
for (IScope kid : childs) {
validate(kid);
}
}
private void check(IScope scope) {
for (FullMixinDefinition mixinDefinition : scope.getAllMixins()) {
IScope mixinScope = mixinDefinition.getScope();
if (mixinScope == null)
throw new IllegalStateException("double WTF: mixin definition without scope");
if (mixinScope.getParent()!=scope && grandParent(mixinScope)!=scope)
throw new IllegalStateException("WTF");
}
}
private IScope grandParent(IScope mixinScope) {
if (!mixinScope.hasParent())
return null;
return mixinScope.getParent().getParent();
}
}