[flang] Resolve an old TODO by flattening a std::optional<std::optional<>>.
Original-commit: flang-compiler/f18@05f47831fc Reviewed-on: https://github.com/flang-compiler/f18/pull/73 Tree-same-pre-rewrite: false
This commit is contained in:
parent
69e3842d60
commit
66c98ee4ca
|
@ -1253,7 +1253,7 @@ TYPE_PARSER(construct<EquivalenceObject>(indirect(designator)))
|
|||
// R873 common-stmt ->
|
||||
// COMMON [/ [common-block-name] /] common-block-object-list
|
||||
// [[,] / [common-block-name] / common-block-object-list]...
|
||||
TYPE_PARSER(construct<CommonStmt>("COMMON" >> maybe("/" >> maybe(name) / "/"),
|
||||
TYPE_PARSER(construct<CommonStmt>("COMMON" >> defaulted("/" >> maybe(name) / "/"),
|
||||
nonemptyList(Parser<CommonBlockObject>{}),
|
||||
many(
|
||||
maybe(","_tok) >> construct<CommonStmt::Block>("/" >> maybe(name) / "/",
|
||||
|
|
|
@ -1500,8 +1500,8 @@ struct CommonStmt {
|
|||
std::tuple<std::optional<Name>, std::list<CommonBlockObject>> t;
|
||||
};
|
||||
TUPLE_CLASS_BOILERPLATE(CommonStmt);
|
||||
std::tuple<std::optional<std::optional<Name>>, // TODO: flatten
|
||||
std::list<CommonBlockObject>, std::list<Block>>
|
||||
std::tuple<std::optional<Name>, std::list<CommonBlockObject>,
|
||||
std::list<Block>>
|
||||
t;
|
||||
};
|
||||
|
||||
|
|
|
@ -653,7 +653,7 @@ public:
|
|||
}
|
||||
void Unparse(const CommonStmt &x) { // R873
|
||||
Word("COMMON ");
|
||||
Walk("/", std::get<std::optional<std::optional<Name>>>(x.t), "/");
|
||||
Walk("/", std::get<std::optional<Name>>(x.t), "/");
|
||||
Walk(std::get<std::list<CommonBlockObject>>(x.t), ", ");
|
||||
Walk(", ", std::get<std::list<CommonStmt::Block>>(x.t), ", ");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue