mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
Interrogate issues: "fix #pragma once" for files specified on command-line, fix "unexpected $end" not having line numbers when parsing template parameter list
This commit is contained in:
parent
50e8d5d08d
commit
1467541b8d
@ -55,7 +55,7 @@ public:
|
|||||||
|
|
||||||
Filename _filename;
|
Filename _filename;
|
||||||
Filename _filename_as_referenced;
|
Filename _filename_as_referenced;
|
||||||
Source _source;
|
mutable Source _source;
|
||||||
mutable bool _pragma_once;
|
mutable bool _pragma_once;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -45,7 +45,20 @@ is_fully_specified() const {
|
|||||||
*/
|
*/
|
||||||
bool CPPParser::
|
bool CPPParser::
|
||||||
parse_file(const Filename &filename) {
|
parse_file(const Filename &filename) {
|
||||||
if (!init_cpp(CPPFile(filename, filename, CPPFile::S_local))) {
|
Filename canonical(filename);
|
||||||
|
canonical.make_canonical();
|
||||||
|
|
||||||
|
CPPFile file(canonical, filename, CPPFile::S_local);
|
||||||
|
|
||||||
|
// Don't read it if we included it before and it had #pragma once.
|
||||||
|
ParsedFiles::iterator it = _parsed_files.find(file);
|
||||||
|
if (it != _parsed_files.end() && it->_pragma_once) {
|
||||||
|
// But mark it as local.
|
||||||
|
it->_source = CPPFile::S_local;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!init_cpp(file)) {
|
||||||
cerr << "Unable to read " << filename << "\n";
|
cerr << "Unable to read " << filename << "\n";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -951,7 +951,7 @@ internal_get_next_token() {
|
|||||||
case ',':
|
case ',':
|
||||||
if (_paren_nesting <= 0) {
|
if (_paren_nesting <= 0) {
|
||||||
_state = S_end_nested;
|
_state = S_end_nested;
|
||||||
return CPPToken::eof();
|
return CPPToken(0, loc);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -959,7 +959,7 @@ internal_get_next_token() {
|
|||||||
if (_paren_nesting <= 0) {
|
if (_paren_nesting <= 0) {
|
||||||
_parsing_template_params = false;
|
_parsing_template_params = false;
|
||||||
_state = S_end_nested;
|
_state = S_end_nested;
|
||||||
return CPPToken::eof();
|
return CPPToken(0, loc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1639,7 +1639,7 @@ handle_include_directive(const string &args, const YYLTYPE &loc) {
|
|||||||
_last_c = '\0';
|
_last_c = '\0';
|
||||||
|
|
||||||
// If it was explicitly named on the command-line, mark it S_local.
|
// If it was explicitly named on the command-line, mark it S_local.
|
||||||
filename.make_absolute();
|
filename.make_canonical();
|
||||||
if (_explicit_files.count(filename)) {
|
if (_explicit_files.count(filename)) {
|
||||||
source = CPPFile::S_local;
|
source = CPPFile::S_local;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user