43ENUM_CLASS(Relation, Less, Equal, Greater, Unordered)
216class FoldingContext {
221 std::set<std::string> &tempNames)
222 : defaults_{d}, intrinsics_{t}, targetCharacteristics_{c},
223 languageFeatures_{lfc}, tempNames_{tempNames} {}
227 std::set<std::string> &tempNames)
228 : messages_{m}, defaults_{d}, intrinsics_{t}, targetCharacteristics_{c},
229 languageFeatures_{lfc}, tempNames_{tempNames} {}
230 FoldingContext(
const FoldingContext &that)
231 : messages_{that.messages_}, defaults_{that.defaults_},
232 intrinsics_{that.intrinsics_},
233 targetCharacteristics_{that.targetCharacteristics_},
234 pdtInstance_{that.pdtInstance_}, impliedDos_{that.impliedDos_},
235 languageFeatures_{that.languageFeatures_}, tempNames_{that.tempNames_} {
239 : messages_{m}, defaults_{that.defaults_}, intrinsics_{that.intrinsics_},
240 targetCharacteristics_{that.targetCharacteristics_},
241 pdtInstance_{that.pdtInstance_}, impliedDos_{that.impliedDos_},
242 languageFeatures_{that.languageFeatures_}, tempNames_{that.tempNames_} {
251 const IntrinsicProcTable &intrinsics()
const {
return intrinsics_; }
253 return targetCharacteristics_;
256 return languageFeatures_;
258 template <
typename... A>
260 return messages_.Warn(
261 IsInModuleFile(), languageFeatures_, feature, std::forward<A>(args)...);
263 template <
typename... A>
265 return messages_.Warn(
266 IsInModuleFile(), languageFeatures_, warning, std::forward<A>(args)...);
268 std::optional<parser::CharBlock> moduleFileName()
const {
269 return moduleFileName_;
271 FoldingContext &set_moduleFileName(std::optional<parser::CharBlock> n) {
275 bool IsInModuleFile()
const {
return moduleFileName_.has_value(); }
281 std::map<parser::CharBlock, ConstantSubscript> &impliedDos() {
287 return common::ScopedSet(pdtInstance_, &spec);
290 return common::ScopedSet(pdtInstance_,
nullptr);
294 return {*tempNames_.emplace(std::move(name)).first};
300 const IntrinsicProcTable &intrinsics_;
303 std::optional<parser::CharBlock> moduleFileName_;
304 std::map<parser::CharBlock, ConstantSubscript> impliedDos_;
306 std::set<std::string> &tempNames_;