public override void VisitInclude(IncludeClause include)
{
include.TypeSpecifier.Accept(this);
ClassDefinition cls =
typeManager.GetClass(include.TypeSpecifier.Name);
if (cls == null) {
report.Error(include.Location,
"cannot find the definition of {0}",
include.TypeSpecifier.Name);
return;
}
foreach (ClassElement element in cls.Children) {
FeatureModifier featureModifier = null;
foreach (FeatureModifier fm in include.FeatureModifierList) {
if (fm.Name == element.Name) {
featureModifier = fm;
break;
}
}
if (featureModifier == null) {
featureModifier = new FeatureModifier(element.Name,
element.Name,
include.Modifier,
Location.Null);
}
else {
if (featureModifier.NewName == "")
continue;
}
element.IncludeTo(currentClass, featureModifier);
}
}