Index: runtime/observatory/lib/src/elements/script_inset.dart |
diff --git a/runtime/observatory/lib/src/elements/script_inset.dart b/runtime/observatory/lib/src/elements/script_inset.dart |
index 2c633fea6c80e9056fa082f81e8cbd2f4e5b6a15..f5a9edd45811627d6f0247f313938c60f8ac0c28 100644 |
--- a/runtime/observatory/lib/src/elements/script_inset.dart |
+++ b/runtime/observatory/lib/src/elements/script_inset.dart |
@@ -159,7 +159,7 @@ class CallSiteAnnotation extends Annotation { |
} |
} |
-class DeclarationAnnotation extends Annotation { |
+abstract class DeclarationAnnotation extends Annotation { |
DeclarationAnnotation(decl) { |
assert(decl.loaded); |
var script = decl.script; |
@@ -628,7 +628,10 @@ class ScriptInsetElement extends ObservatoryElement { |
e.classes.clear(); |
e.classes.add('noCopy'); |
- if (busy) { |
+ if (!line.possibleBpt) { |
+ e.classes.add("emptyBreakpoint"); |
+ e.text = nbsp; |
+ } else if (busy) { |
e.classes.add("busyBreakpoint"); |
} else { |
if (line.breakpoints != null) { |
@@ -650,10 +653,17 @@ class ScriptInsetElement extends ObservatoryElement { |
busy = true; |
if (line.breakpoints == null) { |
// No breakpoint. Add it. |
- line.script.isolate.addBreakpoint(line.script, line.line).then((_) { |
- busy = false; |
- update(); |
- }); |
+ line.script.isolate.addBreakpoint(line.script, line.line) |
+ .catchError((e, st) { |
+ if (e is! ServerRpcException || |
+ (e as ServerRpcException).code != |
+ ServerRpcException.kNoBreakAtLine) { |
+ app.handleException(e, st); |
+ }}) |
+ .whenComplete(() { |
+ busy = false; |
+ update(); |
+ }); |
} else { |
// Existing breakpoint. Remove it. |
List pending = []; |