[flang] Fix classes with variant and other fields

Fortran::FormatItem and UseStmt have both normal fields and a variant
named 'u'. The Walk calls for the normal fields were missing.
These were the only two classes I found where this occurs.

Original-commit: flang-compiler/f18@23b8695a74
Reviewed-on: https://github.com/flang-compiler/f18/pull/17
This commit is contained in:
Tim Keith 2018-02-26 15:07:24 -08:00
parent c2c6e28cec
commit 66c9a69a61
1 changed files with 9 additions and 6 deletions

View File

@ -295,6 +295,10 @@ void Walk(const Fortran::DerivedTypeDataEditDesc &x, V &visitor) {
visitor.Post(x);
}
}
template<typename V> void Walk(const Fortran::FormatItem &x, V &visitor) {
Walk(x.repeatCount, visitor);
WalkUnionClass(x, visitor);
}
template<typename V>
void Walk(const Fortran::IntrinsicTypeDataEditDesc &x, V &visitor) {
if (visitor.Pre(x)) {
@ -401,6 +405,11 @@ void Walk(const TypeBoundProcedureStmt::WithoutInterface &x, V &visitor) {
visitor.Post(x);
}
}
template<typename V> void Walk(const UseStmt &x, V &visitor) {
Walk(x.nature, visitor);
Walk(x.moduleName, visitor);
WalkUnionClass(x, visitor);
}
template<typename V> void Walk(const WriteStmt &x, V &visitor) {
if (visitor.Pre(x)) {
Walk(x.iounit, visitor);
@ -1037,9 +1046,6 @@ void Walk(const FormTeamStmt::FormTeamSpec &x, V &visitor) {
template<typename V> void Walk(const Format &x, V &visitor) {
WalkUnionClass(x, visitor);
}
template<typename V> void Walk(const Fortran::FormatItem &x, V &visitor) {
WalkUnionClass(x, visitor);
}
template<typename V> void Walk(const GenericSpec &x, V &visitor) {
WalkUnionClass(x, visitor);
}
@ -1197,9 +1203,6 @@ template<typename V> void Walk(const TypeParamValue &x, V &visitor) {
template<typename V> void Walk(const TypeSpec &x, V &visitor) {
WalkUnionClass(x, visitor);
}
template<typename V> void Walk(const UseStmt &x, V &visitor) {
WalkUnionClass(x, visitor);
}
template<typename V> void Walk(const Variable &x, V &visitor) {
WalkUnionClass(x, visitor);
}