Lines Matching refs:lvalue
3670 gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform,
3677 sym = lvalue->symtree->n.sym;
3682 for (ref = lvalue->ref; ref; ref = ref->next)
3691 "allowed", &lvalue->where);
3746 gfc_error ("%qs at %L is not a VALUE", sym->name, &lvalue->where);
3758 &lvalue->where);
3763 if (rvalue->rank != 0 && lvalue->rank != rvalue->rank)
3766 lvalue->rank, rvalue->rank, &lvalue->where);
3770 if (lvalue->ts.type == BT_UNKNOWN)
3773 &lvalue->where);
3780 && lvalue->symtree->n.sym->attr.data)
3798 if (lvalue->rank != 0 && rvalue->rank != 0
3799 && !gfc_check_conformance (lvalue, rvalue, _("array assignment")))
3805 if (lvalue->symtree->n.sym->attr.data)
3807 if (lvalue->ts.type == BT_INTEGER
3808 && gfc_boz2int (rvalue, lvalue->ts.kind))
3811 if (lvalue->ts.type == BT_REAL
3812 && gfc_boz2real (rvalue, lvalue->ts.kind))
3822 if (!lvalue->symtree->n.sym->attr.data
3829 if (lvalue->ts.type == BT_INTEGER
3830 && gfc_boz2int (rvalue, lvalue->ts.kind))
3833 if (lvalue->ts.type == BT_REAL
3834 && gfc_boz2real (rvalue, lvalue->ts.kind))
3838 "%qs variable", &rvalue->where, gfc_typename (lvalue));
3842 if (gfc_expr_attr (lvalue).pdt_kind || gfc_expr_attr (lvalue).pdt_len)
3846 &lvalue->where);
3850 if (gfc_compare_types (&lvalue->ts, &rvalue->ts))
3860 if ((gfc_numeric_ts (&lvalue->ts) && gfc_numeric_ts (&rvalue->ts))
3864 if (flag_dec_char_conversions && (gfc_numeric_ts (&lvalue->ts)
3865 || lvalue->ts.type == BT_LOGICAL)
3870 if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL)
3873 where = lvalue->where.lb ? &lvalue->where : &rvalue->where;
3876 gfc_typename (rvalue), gfc_typename (lvalue));
3883 if (lvalue->ts.type == BT_CHARACTER && rvalue->ts.type == BT_CHARACTER)
3885 if (lvalue->ts.kind != rvalue->ts.kind && allow_convert)
3886 return gfc_convert_chartype (rvalue, &lvalue->ts);
3894 return gfc_convert_type (rvalue, &lvalue->ts, 1);
3898 /* Check that a pointer assignment is OK. We first check lvalue, and
3903 gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue,
3912 if (!lvalue->symtree)
3915 lhs_attr = gfc_expr_attr (lvalue);
3916 if (lvalue->ts.type == BT_UNKNOWN && !lhs_attr.proc_pointer)
3919 &lvalue->where);
3928 lvalue->symtree->n.sym->name, &lvalue->where);
3932 proc_pointer = lvalue->symtree->n.sym->attr.proc_pointer;
3935 same_rank = lvalue->rank == rvalue->rank;
3936 for (ref = lvalue->ref; ref; ref = ref->next)
3951 lvalue->symtree->n.sym->name, &lvalue->where);
3957 lvalue->symtree->n.sym->name, &lvalue->where))
3985 &lvalue->where);
3992 "specifications at %L", &lvalue->where);
4000 "specifications at %L", &lvalue->where);
4012 "specifications at %L", &lvalue->where);
4019 "specifications at %L", &lvalue->where);
4031 kind, etc for lvalue and rvalue must match, and rvalue must be a
4037 if (lvalue->expr_type == EXPR_VARIABLE
4038 && gfc_is_coindexed (lvalue))
4041 for (ref = lvalue->ref; ref; ref = ref->next)
4045 &lvalue->where);
4140 && lvalue->symtree->n.sym->attr.ext_attr
4150 if ((calls.ext_attr & lvalue->symtree->n.sym->attr.ext_attr)
4160 comp1 = gfc_get_proc_ptr_comp (lvalue);
4165 s1 = lvalue->symtree->n.sym;
4202 /* Special check for the case of absent interface on the lvalue.
4217 comp1->name, &lvalue->where, err);
4223 s1->name, &lvalue->where, err);
4277 if (!gfc_compare_types (&lvalue->ts, &rvalue->ts))
4281 && !(UNLIMITED_POLY (lvalue)
4282 || (lvalue->ts.type == BT_DERIVED
4283 && (lvalue->ts.u.derived->attr.is_bind_c
4284 || lvalue->ts.u.derived->attr.sequence))))
4288 "polymorphic target", &lvalue->where);
4291 "attempted assignment of %s to %s", &lvalue->where,
4292 gfc_typename (rvalue), gfc_typename (lvalue));
4296 if (lvalue->ts.type != BT_CLASS && lvalue->ts.kind != rvalue->ts.kind)
4299 "assignment at %L", &lvalue->where);
4303 if (lvalue->rank != rvalue->rank && !rank_remap)
4305 gfc_error ("Different ranks in pointer assignment at %L", &lvalue->where);
4310 if (lvalue->ts.type == BT_CLASS && !UNLIMITED_POLY (rvalue))
4320 if (gfc_array_size (lvalue, &lsize)
4327 &lvalue->where);
4352 lvalue->symtree->n.sym->attr.subref_array_pointer = 1;
4453 if (lvalue->ts.type == BT_CHARACTER)
4455 bool t = gfc_check_same_strlen (lvalue, rvalue, "pointer assignment");
4529 warn = lvalue->symtree->n.sym->attr.dummy
4530 || lvalue->symtree->n.sym->attr.result
4531 || lvalue->symtree->n.sym->attr.function
4532 || (lvalue->symtree->n.sym->attr.host_assoc
4533 && lvalue->symtree->n.sym->ns
4535 || lvalue->symtree->n.sym->attr.use_assoc
4536 || lvalue->symtree->n.sym->attr.in_common;
4544 if (ns->parent == lvalue->symtree->n.sym->ns)
4553 "pointer target", &lvalue->where);
4560 /* Relative of gfc_check_assign() except that the lvalue is a single
4566 gfc_expr lvalue;
4570 memset (&lvalue, '\0', sizeof (gfc_expr));
4572 lvalue.expr_type = EXPR_VARIABLE;
4573 lvalue.ts = sym->ts;
4575 lvalue.rank = sym->as->rank;
4576 lvalue.symtree = XCNEW (gfc_symtree);
4577 lvalue.symtree->n.sym = sym;
4578 lvalue.where = sym->declared_at;
4582 lvalue.ref = gfc_get_ref ();
4583 lvalue.ref->type = REF_COMPONENT;
4584 lvalue.ref->u.c.component = comp;
4585 lvalue.ref->u.c.sym = sym;
4586 lvalue.ts = comp->ts;
4587 lvalue.rank = comp->as ? comp->as->rank : 0;
4588 lvalue.where = comp->loc;
4601 r = gfc_check_pointer_assign (&lvalue, rvalue, false, true);
4612 r = gfc_check_assign (&lvalue, rvalue, 1);
4615 free (lvalue.symtree);
4616 free (lvalue.ref);