Skip to content

Commit 114e7d9

Browse files
authored
Merge pull request #247 from QE-Lab/bug/duplicate-kernel-names
fixed duplicate kernel name issue
2 parents bb3ab86 + dfc439a commit 114e7d9

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

src/program.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ void quantum_program::add(ql::quantum_kernel &k)
9797
}
9898
}
9999

100+
for (auto kernel : kernels)
101+
{
102+
if(kernel.name == k.name)
103+
{
104+
FATAL("Cannot add kernel. Duplicate kernel name: " << k.name);
105+
}
106+
}
100107
// if sane, now add kernel to list of kernels
101108
kernels.push_back(k);
102109
}

tests/test_Kernel.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,32 @@ def test_multi_kernel(self):
111111

112112
p.compile()
113113

114+
def test_duplicate_kernel_name(self):
115+
nqubits = 3
116+
117+
p = ql.Program("aProgram", platf, nqubits)
118+
k1 = ql.Kernel("aKernel1", platf, nqubits)
119+
k2 = ql.Kernel("aKernel2", platf, nqubits)
120+
k3 = ql.Kernel("aKernel1", platf, nqubits)
121+
122+
k1.gate('x', [0])
123+
k2.gate('x', [0])
124+
k3.gate('x', [0])
125+
126+
# add the kernel to the program
127+
p.add_kernel(k1)
128+
p.add_kernel(k2)
129+
130+
# following call to add_kernel should fail as k3 has duplicate name
131+
try:
132+
p.add_kernel(k3)
133+
raise
134+
except:
135+
pass
136+
137+
# compile the program
138+
p.compile()
139+
114140

115141
if __name__ == '__main__':
116142
unittest.main()

0 commit comments

Comments
 (0)