* typeck2.c (build_m_component_ref): Robustify.
From-SVN: r39731
This commit is contained in:
parent
e2c094827c
commit
f1a3f197e1
|
@ -1,3 +1,7 @@
|
||||||
|
2001-02-15 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
* typeck2.c (build_m_component_ref): Robustify.
|
||||||
|
|
||||||
2001-02-15 Alexandre Oliva <aoliva@redhat.com>
|
2001-02-15 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
* friend.c (do_friend): Don't take the nested [template] class
|
* friend.c (do_friend): Don't take the nested [template] class
|
||||||
|
|
|
@ -1093,6 +1093,10 @@ build_m_component_ref (datum, component)
|
||||||
return build_min_nt (DOTSTAR_EXPR, datum, component);
|
return build_min_nt (DOTSTAR_EXPR, datum, component);
|
||||||
|
|
||||||
datum = decay_conversion (datum);
|
datum = decay_conversion (datum);
|
||||||
|
|
||||||
|
if (datum == error_mark_node || component == error_mark_node)
|
||||||
|
return error_mark_node;
|
||||||
|
|
||||||
objtype = TYPE_MAIN_VARIANT (TREE_TYPE (datum));
|
objtype = TYPE_MAIN_VARIANT (TREE_TYPE (datum));
|
||||||
|
|
||||||
if (TYPE_PTRMEMFUNC_P (TREE_TYPE (component)))
|
if (TYPE_PTRMEMFUNC_P (TREE_TYPE (component)))
|
||||||
|
@ -1100,18 +1104,15 @@ build_m_component_ref (datum, component)
|
||||||
type = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (TREE_TYPE (component)));
|
type = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (TREE_TYPE (component)));
|
||||||
field_type = type;
|
field_type = type;
|
||||||
}
|
}
|
||||||
else
|
else if (TYPE_PTRMEM_P (TREE_TYPE (component)))
|
||||||
{
|
{
|
||||||
type = TREE_TYPE (TREE_TYPE (component));
|
type = TREE_TYPE (TREE_TYPE (component));
|
||||||
field_type = TREE_TYPE (type);
|
field_type = TREE_TYPE (type);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if (datum == error_mark_node || component == error_mark_node)
|
|
||||||
return error_mark_node;
|
|
||||||
|
|
||||||
if (TREE_CODE (type) != OFFSET_TYPE && TREE_CODE (type) != METHOD_TYPE)
|
|
||||||
{
|
{
|
||||||
cp_error ("`%E' cannot be used as a member pointer, since it is of type `%T'", component, type);
|
cp_error ("`%E' cannot be used as a member pointer, since it is of type `%T'",
|
||||||
|
component, TREE_TYPE (component));
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Build don't link:
|
// Build don't link:
|
||||||
// crash test - XFAIL *-*-*
|
// crash test
|
||||||
|
|
||||||
// Copyright (c) 2000 Free Software Foundation.
|
// Copyright (c) 2000, 2001 Free Software Foundation.
|
||||||
// Distilled from a bug report by Eric Ford <eford@princeton.edu>
|
// Distilled from a bug report by Eric Ford <eford@princeton.edu>
|
||||||
|
|
||||||
extern double *y;
|
extern double *y;
|
||||||
|
@ -12,5 +12,5 @@ void SetInitCond(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i = 2; i < nPoints; ++i)
|
for(i = 2; i < nPoints; ++i)
|
||||||
y[i] = y[nPoints] .* (x[i]-x[1]) / (x[nPoints]-x[1]); // ERROR
|
y[i] = y[nPoints] .* (x[i]-x[1]) / (x[nPoints]-x[1]); // ERROR - .*
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue