diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index 8c4adca44..0246008a4 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -1253,6 +1253,13 @@ describe "DisplayBuffer", -> decoration.destroy() expect(displayBuffer.decorationForId(decoration.id)).not.toBeDefined() + it "does not allow destroyed markers to be decorated", -> + marker.destroy() + expect(-> + displayBuffer.decorateMarker(marker, {type: 'overlay', item: document.createElement('div')}) + ).toThrow("Cannot decorate a destroyed marker") + expect(displayBuffer.getOverlayDecorations()).toEqual [] + describe "when a decoration is updated via Decoration::update()", -> it "emits an 'updated' event containing the new and old params", -> decoration.onDidChangeProperties updatedSpy = jasmine.createSpy() diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index f5a7bd853..8b95656f9 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -812,6 +812,7 @@ class DisplayBuffer extends Model decorationsState decorateMarker: (marker, decorationParams) -> + throw new Error("Cannot decorate a destroyed marker") if marker.isDestroyed() marker = @getMarkerLayer(marker.layer.id).getMarker(marker.id) decoration = new Decoration(marker, this, decorationParams) @decorationsByMarkerId[marker.id] ?= []