diff --git a/Lib/fontTools/otlLib/builder.py b/Lib/fontTools/otlLib/builder.py index 7e1444518..7711fa4c5 100644 --- a/Lib/fontTools/otlLib/builder.py +++ b/Lib/fontTools/otlLib/builder.py @@ -2574,7 +2574,8 @@ class ClassDefBuilder(object): return self.classes_.add(glyphs) for glyph in glyphs: - assert glyph not in self.glyphs_ + if glyph in self.glyphs_: + raise TypeError(f"Glyph {glyph} already present in class.") self.glyphs_[glyph] = glyphs def classes(self): diff --git a/Tests/otlLib/builder_test.py b/Tests/otlLib/builder_test.py index bdfc64509..a2c51331d 100644 --- a/Tests/otlLib/builder_test.py +++ b/Tests/otlLib/builder_test.py @@ -1101,6 +1101,18 @@ class ClassDefBuilderTest(object): assert not b.canAdd({"d", "e", "f"}) assert not b.canAdd({"f"}) + def test_add_exception(self): + b = builder.ClassDefBuilder(useClass0=True) + b.add({"a", "b", "c", "d"}) + with pytest.raises(TypeError): + b.add({"a"}) + with pytest.raises(TypeError): + b.add({"b"}) + with pytest.raises(TypeError): + b.add({"c"}) + with pytest.raises(TypeError): + b.add({"d"}) + buildStatTable_test_data = [ ([