FLANG
lib
Semantics
check-purity.h
1
//===-- lib/Semantics/check-purity.h ----------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef FORTRAN_SEMANTICS_CHECK_PURITY_H_
10
#define FORTRAN_SEMANTICS_CHECK_PURITY_H_
11
#include "flang/Semantics/semantics.h"
12
#include <list>
13
namespace
Fortran::parser
{
14
struct
ExecutableConstruct;
15
struct
SubroutineSubprogram;
16
struct
FunctionSubprogram;
17
struct
PrefixSpec;
18
}
// namespace Fortran::parser
19
namespace
Fortran::semantics {
20
class
PurityChecker
:
public
virtual
BaseChecker
{
21
public
:
22
explicit
PurityChecker
(
SemanticsContext
&c) : context_{c} {}
23
void
Enter(
const
parser::ExecutableConstruct
&);
24
void
Enter(
const
parser::SubroutineSubprogram
&);
25
void
Leave(
const
parser::SubroutineSubprogram
&);
26
void
Enter(
const
parser::FunctionSubprogram
&);
27
void
Leave(
const
parser::FunctionSubprogram
&);
28
29
private
:
30
bool
InPureSubprogram()
const
;
31
bool
HasPurePrefix(
const
std::list<parser::PrefixSpec> &)
const
;
32
void
Entered(
parser::CharBlock
,
const
std::list<parser::PrefixSpec> &);
33
void
Left();
34
SemanticsContext
&context_;
35
int
depth_{0};
36
int
pureDepth_{-1};
37
};
38
}
// namespace Fortran::semantics
39
#endif
Fortran::parser::CharBlock
Definition:
char-block.h:28
Fortran::semantics::PurityChecker
Definition:
check-purity.h:20
Fortran::semantics::SemanticsContext
Definition:
semantics.h:67
Fortran::parser
Definition:
check-expression.h:19
Fortran::parser::ExecutableConstruct
Definition:
parse-tree.h:523
Fortran::parser::FunctionSubprogram
Definition:
parse-tree.h:3298
Fortran::parser::SubroutineSubprogram
Definition:
parse-tree.h:3308
Fortran::semantics::BaseChecker
Definition:
semantics.h:367
Generated on Thu Apr 24 2025 21:44:37 for FLANG by
1.9.6