File: CompilerLocatorRustc.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (96 lines) | stat: -rw-r--r-- 2,918 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "CompilerLocatorRustc.hpp"

#include "build_settings_config.h"
#include "file_logger.h"

CompilerLocatorRustc::CompilerLocatorRustc() {}

CompilerLocatorRustc::~CompilerLocatorRustc() {}

bool CompilerLocatorRustc::Locate()
{
    // This is a dummy compiler, we dont really need it
    // we only need the patterns

    wxString error_pattern = R"re1(^error\[.*?\]:(.*?)$)re1";
    wxString error_pattern2 = R"re2(^error:[ ]+(.*?))re2";
    wxString warn_pattern = R"re3(-->[ ]*([\\\w\./]+):([\d]+):([\d]+))re3";
    wxString warn_pattern1 = R"(:::[ ]*([\\\w\./]+):([\d]+):([\d]+))";
    wxString warn_pattern2 = R"re4(^warning:)re4";
    wxString warn_pattern3 = R"re5(^note:)re5";

    clDEBUG() << "Searching for rustc compiler..." << endl;

    CompilerPtr rustc(new Compiler(nullptr));
    // need to create it
    rustc->SetCompilerFamily("Other");
    rustc->SetName("rustc");
    Compiler::CmpListInfoPattern errPatterns;
    Compiler::CmpListInfoPattern warnPatterns;
    {
        // error[E1234]:
        Compiler::CmpInfoPattern pattern;
        pattern.pattern = error_pattern;
        pattern.columnIndex = "-1";
        pattern.lineNumberIndex = "-1";
        pattern.fileNameIndex = "-1";
        errPatterns.push_back(pattern);
    }
    {
        // error:
        Compiler::CmpInfoPattern pattern;
        pattern.pattern = error_pattern2;
        pattern.columnIndex = "-1";
        pattern.lineNumberIndex = "-1";
        pattern.fileNameIndex = "-1";
        errPatterns.push_back(pattern);
    }

    {
        // --> src/main.rs:1:23
        Compiler::CmpInfoPattern pattern;
        pattern.pattern = warn_pattern;
        pattern.fileNameIndex = "1";
        pattern.lineNumberIndex = "2";
        pattern.columnIndex = "3";
        warnPatterns.push_back(pattern);
    }

    {
        // ::: src/main.rs:1:23
        Compiler::CmpInfoPattern pattern;
        pattern.pattern = warn_pattern1;
        pattern.fileNameIndex = "1";
        pattern.lineNumberIndex = "2";
        pattern.columnIndex = "3";
        warnPatterns.push_back(pattern);
    }

    {
        // warning:
        Compiler::CmpInfoPattern pattern;
        pattern.pattern = warn_pattern2;
        pattern.fileNameIndex = "-1";
        pattern.lineNumberIndex = "-1";
        pattern.columnIndex = "-1";
        warnPatterns.push_back(pattern);
    }
    {
        // note:
        Compiler::CmpInfoPattern pattern;
        pattern.pattern = warn_pattern3;
        pattern.fileNameIndex = "-1";
        pattern.lineNumberIndex = "-1";
        pattern.columnIndex = "-1";
        warnPatterns.push_back(pattern);
    }

    rustc->SetWarnPatterns(warnPatterns);
    rustc->SetErrPatterns(errPatterns);
    rustc->SetTool("CXX", "rustc");
    rustc->SetTool("CC", "rustc");
    m_compilers.push_back(rustc);
    return true;
}

CompilerPtr CompilerLocatorRustc::Locate(const wxString& folder) { return nullptr; }