Skip to content

Conversion from distinct in for forces a copy of underlying instance #25469

@arnetheduck

Description

@arnetheduck

Nim Version

2.2.6

Description

type
  Large = array[1024, byte]
  List = distinct seq[Large]

var
  ok: seq[Large]
  broken: List

for i in ok:
  discard i

for i in seq[Large](broken):
  discard i
		NI i_1;
		NI L_1;
		NI T2_;
		i_1 = ((NI)0);
		T2_ = ok__testit_u4.len;
		L_1 = T2_;
		{
			while (1) {
				if (!(i_1 < L_1)) goto LA4;
				i__testit_u26 = ok__testit_u4.p->data[i_1];
				(void)(i__testit_u26);
				i_1 += ((NI)1);
			} LA4: ;
		}
	}
	{
		tySequence__9aaOxtCZgU05BzfyirOAtcA colontmp_;
		tySequence__9aaOxtCZgU05BzfyirOAtcA colontmpD_;
		NI i_2;
		NI L_2;
		NI T6_;
		colontmp_.len = 0; colontmp_.p = NIM_NIL;
		colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
		colontmpD_ = eqdup___testit_u173(broken__testit_u5);
		colontmp_ = colontmpD_;
		i_2 = ((NI)0);
		T6_ = colontmp_.len;
		L_2 = T6_;
		{
			while (1) {
				if (!(i_2 < L_2)) goto LA8;
				i__testit_u30 = colontmp_.p->data[i_2];
				(void)(i__testit_u30);
				i_2 += ((NI)1);
			} LA8: ;
		}

spot the eqdup - ditto for refc

Current Output


Expected Output


Known Workarounds

No response

Additional Information

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions