• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rjfarmer / gfModParser / 15258420526

26 May 2025 04:25PM UTC coverage: 83.515% (-0.08%) from 83.597%
15258420526

push

github

rjfarmer
Fix intrinsics

1 of 2 new or added lines in 1 file covered. (50.0%)

689 of 825 relevant lines covered (83.52%)

0.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.73
/gfModParser/modules/mod.py
1
# SPDX-License-Identifier: GPL-2.0+
2

3
# https://github.com/gcc-mirror/gcc/blob/master/gcc/fortran/module.cc
4

5
import typing as t
1✔
6

7
from .. import utils
1✔
8
from .. import io
1✔
9

10
from . import summary
1✔
11
from . import symbols
1✔
12

13

14
class VersionError(Exception):
1✔
15
    pass
1✔
16

17

18
class module:
1✔
19
    def __init__(self, filename, *, version):
1✔
20
        self.filename = filename
1✔
21
        self.version = version
1✔
22

23
        self._interfaces = None
1✔
24
        self._operators = None
1✔
25
        self._common = None
1✔
26
        self._equivalence = None
1✔
27
        self._omp = None
1✔
28
        self._symbols = None
1✔
29
        self._summary = None
1✔
30

31
        self.load()
1✔
32

33
    def load(self):
1✔
34
        # Read in data
35
        if self.filename.suffixes == [".mod", ".txt"]:
1✔
36
            raw_data = io.read_uncompressed(self.filename)
1✔
37
        else:
38
            raw_data = io.read_compressed(self.filename)
1✔
39

40
        # Split into sections
41
        (
1✔
42
            self._raw_interface,
43
            self._raw_operators,
44
            self._raw_generics,
45
            self._raw_common,
46
            self._raw_equivalence,
47
            self._raw_omp,
48
            self._raw_symbols,
49
            self._raw_summary,
50
        ) = raw_data.split("\n\n")
51

52
    def _load_summary(self):
1✔
53
        if self._summary is None:
1✔
54
            self._summary = summary.Summary(self._raw_summary, version=self.version)
1✔
55

56
    def _load_symbols(self):
1✔
57
        if self._symbols is None:
1✔
58
            self._symbols = symbols.Symbols(self._raw_symbols, version=self.version)
1✔
59

60
    def keys(self):
1✔
61
        self._load_summary()
1✔
62
        return self._summary.keys()
1✔
63

64
    def __contains__(self, key):
1✔
65
        self._load_summary()
1✔
66
        return key in self._summary
1✔
67

68
    def __getitem__(self, key):
1✔
69
        self._load_summary()
1✔
70
        self._load_symbols()
1✔
71
        if key[0].isupper() and key in self._summary:
1✔
72
            # Derivied type definition starts with a captial letter
73
            return self._symbols[self._summary[key].id]
1✔
74
        elif key.startswith("__"):
1✔
75
            # Don't change case on internal gfortran fucntions
NEW
76
            return self._symbols[self._summary[key].id]
×
77
        else:
78
            # Everything else is lower case
79
            return self._symbols[self._summary[key.lower()].id]
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc