PR c++/14002
* semantics.c (finish_id_expression): Do not return an
IDENTIFIER_NODE when lookup finds a PARM_DECL.
PR c++/14002
* g++.dg/parse/template13.C: New test.
From-SVN: r77183
2004-02-03 Mark Mitchell <mark@codesourcery.com>
+ PR c++/14002
+ * semantics.c (finish_id_expression): Do not return an
+ IDENTIFIER_NODE when lookup finds a PARM_DECL.
+
+2004-02-03 Mark Mitchell <mark@codesourcery.com>
+
PR c++/13978
* pt.c (build_non_dependent_expr): Do not build
NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
/* If we found a variable, then name lookup during the
instantiation will always resolve to the same VAR_DECL
(or an instantiation thereof). */
- if (TREE_CODE (decl) == VAR_DECL)
+ if (TREE_CODE (decl) == VAR_DECL
+ || TREE_CODE (decl) == PARM_DECL)
return decl;
return id_expression;
}
2004-02-03 Mark Mitchell <mark@codesourcery.com>
+ PR c++/14002
+ * g++.dg/parse/template13.C: New test.
+
+2004-02-03 Mark Mitchell <mark@codesourcery.com>
+
PR c++/13978
* g++.dg/template/koenig4.C: New test.
--- /dev/null
+// PR c++/13975
+
+public: // { dg-error "" }
+
+int i;
+
+protected: // { dg-error "" }
+
+int j;
+
+private: // { dg-error "" }
+
+int k;
--- /dev/null
+// PR c++/14002
+
+template <typename T> void foo (T x) { x; }
+
+void bar() { foo(0); }
+
+struct A
+{
+ friend void foo<int> (int);
+};