Revert "GUI: restore default tab in ProjectFileDialog"

This reverts commit 39564c9e6c.
This commit is contained in:
Daniel Marjamäki 2020-11-23 20:18:06 +01:00
parent 39564c9e6c
commit 4a2e082d85
4 changed files with 14 additions and 80 deletions

View File

@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<number>2</number>
</property>
<widget class="QWidget" name="mTabPathsAndDefines">
<attribute name="title">

View File

@ -2102,11 +2102,7 @@ Function::Function(const Tokenizer *mTokenizer,
}
// class constructor/destructor
else if (((tokenDef->str() == scope->className) ||
(tokenDef->str().substr(0, scope->className.size()) == scope->className &&
tokenDef->str().size() > scope->className.size() + 1 &&
tokenDef->str()[scope->className.size() + 1] == '<')) &&
scope->type != Scope::ScopeType::eNamespace) {
else if (tokenDef->str() == scope->className && scope->type != Scope::ScopeType::eNamespace) {
// destructor
if (tokenDef->previous()->str() == "~")
type = Function::eDestructor;

View File

@ -673,6 +673,15 @@ bool TemplateSimplifier::removeTemplate(Token *tok)
if (tok2->str() == ">")
countgt++;
// don't remove constructor
if (tok2->str() == "explicit" ||
(countgt == 1 && Token::Match(tok2->previous(), "> %type% (") &&
Tokenizer::startOfExecutableScope(tok2->linkAt(1)))) {
eraseTokens(tok, tok2);
deleteToken(tok);
return true;
}
if (tok2->str() == ";") {
tok2 = tok2->next();
eraseTokens(tok, tok2);
@ -886,9 +895,8 @@ void TemplateSimplifier::getTemplateInstantiations()
// get all declarations with this name
for (auto pos = functionNameMap.lower_bound(tok->str());
pos != functionNameMap.upper_bound(tok->str()); ++pos) {
// look for declaration with same qualification or constructor with same qualification
if (pos->second->fullName() == fullName ||
(pos->second->scope() == fullName && tok->str() == pos->second->name())) {
// look for declaration with same qualification
if (pos->second->fullName() == fullName) {
std::vector<const Token *> templateParams;
getTemplateParametersInDeclaration(pos->second->token()->tokAt(2), templateParams);
@ -3030,9 +3038,7 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
if (!Token::Match(instantiation.token(), "%name% <"))
continue;
if (!((instantiation.fullName() == templateDeclaration.fullName()) ||
(instantiation.name() == templateDeclaration.name() &&
instantiation.fullName() == templateDeclaration.scope()))) {
if (instantiation.fullName() != templateDeclaration.fullName()) {
// FIXME: fallback to not matching scopes until type deduction works
// names must match

View File

@ -252,7 +252,6 @@ private:
TEST_CASE(templateTypeDeduction2);
TEST_CASE(templateTypeDeduction3);
TEST_CASE(templateTypeDeduction4); // #9983
TEST_CASE(templateTypeDeduction5);
TEST_CASE(simplifyTemplateArgs1);
TEST_CASE(simplifyTemplateArgs2);
@ -5375,73 +5374,6 @@ private:
}
}
void templateTypeDeduction5() {
{
const char code[] = "class Fred {\n"
"public:\n"
" template <class T> Fred(T t) { }\n"
"};\n"
"Fred fred1 = Fred(0);\n"
"Fred fred2 = Fred(0.0);\n"
"Fred fred3 = Fred(\"zero\");\n"
"Fred fred4 = Fred(false);";
const char exp[] = "class Fred { "
"public: "
"Fred<int> ( int t ) ; "
"Fred<double> ( double t ) ; "
"Fred<constchar*> ( const char * t ) ; "
"Fred<bool> ( bool t ) ; "
"} ; "
"Fred fred1 ; fred1 = Fred<int> ( 0 ) ; "
"Fred fred2 ; fred2 = Fred<double> ( 0.0 ) ; "
"Fred fred3 ; fred3 = Fred<constchar*> ( \"zero\" ) ; "
"Fred fred4 ; fred4 = Fred<bool> ( false ) ; "
"Fred :: Fred<int> ( int t ) { } "
"Fred :: Fred<double> ( double t ) { } "
"Fred :: Fred<constchar*> ( const char * t ) { } "
"Fred :: Fred<bool> ( bool t ) { }";
ASSERT_EQUALS(exp, tok(code));
}
{
const char code[] = "namespace NS {\n"
"class Fred {\n"
"public:\n"
" template <class T> Fred(T t) { }\n"
"};\n"
"Fred fred1 = Fred(0);\n"
"Fred fred2 = Fred(0.0);\n"
"Fred fred3 = Fred(\"zero\");\n"
"Fred fred4 = Fred(false);\n"
"}\n"
"NS::Fred fred1 = NS::Fred(0);\n"
"NS::Fred fred2 = NS::Fred(0.0);\n"
"NS::Fred fred3 = NS::Fred(\"zero\");\n"
"NS::Fred fred4 = NS::Fred(false);\n";
const char exp[] = "namespace NS { "
"class Fred { "
"public: "
"Fred<int> ( int t ) ; "
"Fred<double> ( double t ) ; "
"Fred<constchar*> ( const char * t ) ; "
"Fred<bool> ( bool t ) ; "
"} ; "
"Fred fred1 ; fred1 = Fred<int> ( 0 ) ; "
"Fred fred2 ; fred2 = Fred<double> ( 0.0 ) ; "
"Fred fred3 ; fred3 = Fred<constchar*> ( \"zero\" ) ; "
"Fred fred4 ; fred4 = Fred<bool> ( false ) ; "
"} "
"NS :: Fred fred1 ; fred1 = NS :: Fred<int> ( 0 ) ; "
"NS :: Fred fred2 ; fred2 = NS :: Fred<double> ( 0.0 ) ; "
"NS :: Fred fred3 ; fred3 = NS :: Fred<constchar*> ( \"zero\" ) ; "
"NS :: Fred fred4 ; fred4 = NS :: Fred<bool> ( false ) ; "
"NS :: Fred :: Fred<int> ( int t ) { } "
"NS :: Fred :: Fred<double> ( double t ) { } "
"NS :: Fred :: Fred<constchar*> ( const char * t ) { } "
"NS :: Fred :: Fred<bool> ( bool t ) { }";
ASSERT_EQUALS(exp, tok(code));
}
}
void simplifyTemplateArgs1() {
ASSERT_EQUALS("foo<2> = 2 ; foo<2> ;", tok("template<int N> foo = N; foo < ( 2 ) >;"));
ASSERT_EQUALS("foo<2> = 2 ; foo<2> ;", tok("template<int N> foo = N; foo < 1 + 1 >;"));