Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 335062

Summary: "Invalid redefinition" error for functions with identical signatures but different template parameters
Product: [Tools] CDT Reporter: Nathan Ridge <zeratul976>
Component: cdt-parserAssignee: Markus Schorn <mschorn.eclipse>
Status: RESOLVED FIXED QA Contact: Markus Schorn <mschorn.eclipse>
Severity: normal    
Priority: P3 CC: cdtdoug
Version: 8.0   
Target Milestone: 8.0   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
testcase + fix mschorn.eclipse: iplog-

Description Nathan Ridge CLA 2011-01-21 17:01:10 EST
For the following code:

#include <iostream>
using namespace std;

template <typename T>
void g()
{
    cout << "one\n";
}

template <typename T, typename U>
void g()  // ERROR HERE
{
    cout << "two\n";
}

int main()
{
    g<int>();
    g<int, int>();
    return 0;
}

The parser gives the error: "Invalid redefinition of g".

The code compiles fine with gcc and produces the output

one
two

as expected.
Comment 1 Markus Schorn CLA 2011-02-03 12:40:37 EST
Created attachment 188256 [details]
testcase + fix
Comment 2 Markus Schorn CLA 2011-02-03 12:41:46 EST
Fixed in 8.0 > 20110203.
Comment 3 CDT Genie CLA 2011-02-10 09:12:07 EST
*** cdt cvs genie on behalf of mschorn ***
Bug 335062: Corrected signature for function templates.

[*] PDOMCPPClassTemplateSpecialization.java 1.17 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java?root=Tools_Project&r1=1.16&r2=1.17
[*] PDOMCPPFunctionTemplateSpecialization.java 1.14 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java?root=Tools_Project&r1=1.13&r2=1.14
[*] PDOMCPPDeferredClassInstance.java 1.31 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java?root=Tools_Project&r1=1.30&r2=1.31
[*] PDOMCPPClassTemplatePartialSpecialization.java 1.27 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecialization.java?root=Tools_Project&r1=1.26&r2=1.27

[*] CompositeCPPClassTemplateSpecialization.java 1.11 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplateSpecialization.java?root=Tools_Project&r1=1.10&r2=1.11
[*] CompositeCPPTemplateTemplateParameter.java 1.5 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTemplateParameter.java?root=Tools_Project&r1=1.4&r2=1.5
[*] CompositeCPPClassTemplatePartialSpecializationSpecialization.java 1.4 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplatePartialSpecializationSpecialization.java?root=Tools_Project&r1=1.3&r2=1.4
[*] TemplateInstanceUtil.java 1.16 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/TemplateInstanceUtil.java?root=Tools_Project&r1=1.15&r2=1.16
[*] CompositeCPPFunctionTemplate.java 1.13 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplate.java?root=Tools_Project&r1=1.12&r2=1.13
[*] CompositeCPPFunctionTemplateSpecialization.java 1.10 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplateSpecialization.java?root=Tools_Project&r1=1.9&r2=1.10
[*] CompositeCPPClassTemplate.java 1.16 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplate.java?root=Tools_Project&r1=1.15&r2=1.16

[*] CPPTemplateParameter.java 1.35 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java?root=Tools_Project&r1=1.34&r2=1.35
[*] CPPClassTemplatePartialSpecializationSpecialization.java 1.4 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplatePartialSpecializationSpecialization.java?root=Tools_Project&r1=1.3&r2=1.4
[*] CPPTemplateDefinition.java 1.52 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateDefinition.java?root=Tools_Project&r1=1.51&r2=1.52
[*] CPPClassTemplateSpecialization.java 1.29 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplateSpecialization.java?root=Tools_Project&r1=1.28&r2=1.29
[*] CPPFunctionTemplateSpecialization.java 1.19 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java?root=Tools_Project&r1=1.18&r2=1.19
[*] CPPDeferredClassInstance.java 1.40 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java?root=Tools_Project&r1=1.39&r2=1.40

[*] ICPPTemplateDefinition.java 1.14 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateDefinition.java?root=Tools_Project&r1=1.13&r2=1.14
[*] ICPPTemplateTemplateParameter.java 1.8 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateTemplateParameter.java?root=Tools_Project&r1=1.7&r2=1.8

[*] CPPTemplates.java 1.130 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java?root=Tools_Project&r1=1.129&r2=1.130
[*] CPPSemantics.java 1.200 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java?root=Tools_Project&r1=1.199&r2=1.200

[*] PDOM.java 1.158 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java?root=Tools_Project&r1=1.157&r2=1.158

[*] IndexCPPSignatureUtil.java 1.17 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexCPPSignatureUtil.java?root=Tools_Project&r1=1.16&r2=1.17

[*] AST2TemplateTests.java 1.205 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java?root=Tools_Project&r1=1.204&r2=1.205
[*] AST2CPPSpecTest.java 1.74 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java?root=Tools_Project&r1=1.73&r2=1.74

[*] PDOMTestBase.java 1.24 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestBase.java?root=Tools_Project&r1=1.23&r2=1.24
[*] CPPFunctionTemplateTests.java 1.5 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTemplateTests.java?root=Tools_Project&r1=1.4&r2=1.5