Community
Participate
Working Groups
Build Identifier: HEAD Create a source file with the following content (possibly it requires the GNU Linux headers): #include <sys/stat.h> int main() { struct stat entryInfo; lstat("a", &entryInfo); // ERROR return 0; } The indexer reports the call to lstat as ambiguity. Reproducible: Always
Can you share the declarations for 'lstat' that are considered? You should be able to find them using 'F3' on 'lstat'.
(In reply to comment #1) > Can you share the declarations for 'lstat' that are considered? You should be > able to find them using 'F3' on 'lstat'. Don't know whether that helps, this is the raw text from the header files, you possibly also need the macros: extern int lstat (__const char *__restrict __file, struct stat *__restrict __buf) __THROW __nonnull ((1, 2)); extern __inline__ int __NTH (lstat (__const char *__path, struct stat *__statbuf)) { return __lxstat (_STAT_VER, __path, __statbuf); }
(In reply to comment #2) > (In reply to comment #1) > > Can you share the declarations for 'lstat' that are considered? You should be > > able to find them using 'F3' on 'lstat'. > Don't know whether that helps, this is the raw text from the header files, you > possibly also need the macros: > extern int lstat (__const char *__restrict __file, > struct stat *__restrict __buf) __THROW __nonnull ((1, 2)); > extern __inline__ int > __NTH (lstat (__const char *__path, struct stat *__statbuf)) > { > return __lxstat (_STAT_VER, __path, __statbuf); > } Just copied the content of sys/stat.h into the source file and tried to strip it down. When I add __restrict to the definition, or remove it from the declaration, everything is fine.
Here is a smaller example: void someFunction(int * __restrict a); void someFunction(int * a) { } int main() { int number = 5; someFunction(&number); return 0; } Don't know whether this code is valid, but expanding lstat.h one my system resulted in this.
Thanks, I can see two issues: * Whereever cv-qualifiers are removed the restrict-qualifier needs to be removed also. (Affects function-types and template-instantiation) * The restrict-qualifier needs to be considered during overload resolution. An example for overloading would be: void f(int * __restrict* a) {} void f(int ** a) {} // different function void test() { int* restrict rnumber= 0; int* number = 0; f(& f(&number); // calls f(int** a) return 0; }
Created attachment 180733 [details] Pushes concept of restrict up to IASTPointer and IPointerType
*** cdt cvs genie on behalf of mschorn *** Bug 327328: Push concept of restrict up to IASTPointer and IPointerType. [*] TrailNodeEqualityChecker.java 1.10 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/extractfunction/TrailNodeEqualityChecker.java?root=Tools_Project&r1=1.9&r2=1.10 [*] DOMASTNodeLeaf.java 1.24 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMASTNodeLeaf.java?root=Tools_Project&r1=1.23&r2=1.24 [*] FindIASTNameTarget.java 1.10 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/FindIASTNameTarget.java?root=Tools_Project&r1=1.9&r2=1.10 [*] CPopulateASTViewAction.java 1.30 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java?root=Tools_Project&r1=1.29&r2=1.30 [*] DOMSearchUtil.java 1.3 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMSearchUtil.java?root=Tools_Project&r1=1.2&r2=1.3 [*] CompleteParser2Tests.java 1.45 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java?root=Tools_Project&r1=1.44&r2=1.45 [*] AST2BaseTest.java 1.79 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2BaseTest.java?root=Tools_Project&r1=1.78&r2=1.79 [*] AST2CPPTests.java 1.369 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java?root=Tools_Project&r1=1.368&r2=1.369 [*] GCCCompleteParseExtensionsTest.java 1.15 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/GCCCompleteParseExtensionsTest.java?root=Tools_Project&r1=1.14&r2=1.15 [*] ICASTPointer.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/c/ICASTPointer.java?root=Tools_Project&r1=1.7&r2=1.8 [*] ICPPNodeFactory.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/ICPPNodeFactory.java?root=Tools_Project&r1=1.13&r2=1.14 [*] GCCBuiltinSymbolProvider.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/GCCBuiltinSymbolProvider.java?root=Tools_Project&r1=1.28&r2=1.29 [*] IASTPointer.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/IASTPointer.java?root=Tools_Project&r1=1.7&r2=1.8 [*] ASTSignatureUtil.java 1.28 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTSignatureUtil.java?root=Tools_Project&r1=1.27&r2=1.28 [*] IPointerType.java 1.11 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java?root=Tools_Project&r1=1.10&r2=1.11 [*] NodeWriter.java 1.3 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NodeWriter.java?root=Tools_Project&r1=1.2&r2=1.3 [*] DeclaratorWriter.java 1.9 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclaratorWriter.java?root=Tools_Project&r1=1.8&r2=1.9 [-] GPPPointerToMemberType.java http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPPointerToMemberType.java?root=Tools_Project&view=markup [*] CPPPointerType.java 1.22 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPPointerType.java?root=Tools_Project&r1=1.21&r2=1.22 [-] GPPPointerType.java http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPPointerType.java?root=Tools_Project&view=markup [*] CPPASTUnaryExpression.java 1.38 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java?root=Tools_Project&r1=1.37&r2=1.38 [*] CPPASTTranslationUnit.java 1.79 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java?root=Tools_Project&r1=1.78&r2=1.79 [*] CPPNodeFactory.java 1.18 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNodeFactory.java?root=Tools_Project&r1=1.17&r2=1.18 [*] CPPASTPointerToMember.java 1.12 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointerToMember.java?root=Tools_Project&r1=1.11&r2=1.12 [*] CPPASTPointer.java 1.11 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointer.java?root=Tools_Project&r1=1.10&r2=1.11 [*] GPPASTPointerToMember.java 1.8 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointerToMember.java?root=Tools_Project&r1=1.7&r2=1.8 [*] GPPASTPointer.java 1.9 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointer.java?root=Tools_Project&r1=1.8&r2=1.9 [*] CPPPointerToMemberType.java 1.20 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPPointerToMemberType.java?root=Tools_Project&r1=1.19&r2=1.20 [*] GNUCPPSourceParser.java 1.242 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java?root=Tools_Project&r1=1.241&r2=1.242 [*] IGPPASTPointer.java 1.6 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/IGPPASTPointer.java?root=Tools_Project&r1=1.5&r2=1.6 [*] IGPPASTPointerToMember.java 1.6 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/IGPPASTPointerToMember.java?root=Tools_Project&r1=1.5&r2=1.6 [*] ASTStringUtil.java 1.20 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ASTStringUtil.java?root=Tools_Project&r1=1.19&r2=1.20 [*] Conversions.java 1.69 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/Conversions.java?root=Tools_Project&r1=1.68&r2=1.69 [*] CPPVisitor.java 1.138 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/CPPVisitor.java?root=Tools_Project&r1=1.137&r2=1.138 [*] CPPTemplates.java 1.126 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.125&r2=1.126 [*] SemanticUtil.java 1.50 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/SemanticUtil.java?root=Tools_Project&r1=1.49&r2=1.50 [*] CPPCompositesFactory.java 1.38 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java?root=Tools_Project&r1=1.37&r2=1.38
Created attachment 180761 [details] testcase + fix
Fixed in 8.0 > 20101013.
Marking as fixed.
*** cdt cvs genie on behalf of mschorn *** Bug 327328: Overload resolution and restrict pointers. [*] ASTManager.java 1.24 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/ASTManager.java?root=Tools_Project&r1=1.23&r2=1.24 [*] CPPASTFieldReference.java 1.38 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java?root=Tools_Project&r1=1.37&r2=1.38 [*] CPPClosureType.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/CPPClosureType.java?root=Tools_Project&r1=1.3&r2=1.4 [*] CPPClassScope.java 1.84 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java?root=Tools_Project&r1=1.83&r2=1.84 [*] BuiltinOperators.java 1.8 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/BuiltinOperators.java?root=Tools_Project&r1=1.7&r2=1.8 [*] Cost.java 1.20 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/Cost.java?root=Tools_Project&r1=1.19&r2=1.20 [*] CPPTemplates.java 1.127 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.126&r2=1.127 [*] CPPSemantics.java 1.193 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.192&r2=1.193 [*] Conversions.java 1.70 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/Conversions.java?root=Tools_Project&r1=1.69&r2=1.70 [*] CVQualifier.java 1.3 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/CVQualifier.java?root=Tools_Project&r1=1.2&r2=1.3 [*] TemplateArgumentDeduction.java 1.17 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/TemplateArgumentDeduction.java?root=Tools_Project&r1=1.16&r2=1.17 [*] SemanticUtil.java 1.51 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/SemanticUtil.java?root=Tools_Project&r1=1.50&r2=1.51 [*] CPPVisitor.java 1.139 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/CPPVisitor.java?root=Tools_Project&r1=1.138&r2=1.139 [*] ASTTypeUtil.java 1.60 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java?root=Tools_Project&r1=1.59&r2=1.60 [*] AST2CPPTests.java 1.370 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java?root=Tools_Project&r1=1.369&r2=1.370