Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

1function divide(a: number, b: number): number {
2 return a / b;
3}
4
5const result = divide(10, 2);
6console.log("Result:", result);
7

After

1function divide(a: number, b: number): number {
2 if (b === 0) {
3 throw new Error("Division by zero");
4 }
5 return a / b;
6}
7
8try {
9 const result = divide(10, 2);
10 console.log("Result:", result);
11} catch (error) {
12 console.error("Error:", error.message);
13}
14

Before

program
function_declaration
function "function"
identifier "divide"
formal_parameters
( "("
required_parameter
identifier "a"
type_annotation
: ":"
predefined_type
number "number"
, ","
required_parameter
identifier "b"
type_annotation
: ":"
predefined_type
number "number"
) ")"
type_annotation
: ":"
predefined_type
number "number"
statement_block
{ "{"
return_statement
return "return"
binary_expression
identifier "a"
/ "/"
identifier "b"
; ";"
} "}"
lexical_declaration
const "const"
variable_declarator
identifier "result"
= "="
call_expression
identifier "divide"
arguments
( "("
number "10"
, ","
number "2"
) ")"
; ";"
expression_statement
call_expression
member_expression
identifier "console"
. "."
property_identifier "log"
arguments
( "("
string
" "\""
string_fragment "Result:"
" "\""
, ","
identifier "result"
) ")"
; ";"

After

program
function_declaration
function "function"
identifier "divide"
formal_parameters
( "("
required_parameter
identifier "a"
type_annotation
: ":"
predefined_type
number "number"
, ","
required_parameter
identifier "b"
type_annotation
: ":"
predefined_type
number "number"
) ")"
type_annotation
: ":"
predefined_type
number "number"
statement_block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "b"
=== "==="
number "0"
) ")"
statement_block
{ "{"
throw_statement
throw "throw"
new_expression
new "new"
identifier "Error"
arguments
( "("
string
" "\""
string_fragment "Division by zero"
" "\""
) ")"
; ";"
} "}"
return_statement
return "return"
binary_expression
identifier "a"
/ "/"
identifier "b"
; ";"
} "}"
try_statement
try "try"
statement_block
{ "{"
lexical_declaration
const "const"
variable_declarator
identifier "result"
= "="
call_expression
identifier "divide"
arguments
( "("
number "10"
, ","
number "2"
) ")"
; ";"
expression_statement
call_expression
member_expression
identifier "console"
. "."
property_identifier "log"
arguments
( "("
string
" "\""
string_fragment "Result:"
" "\""
, ","
identifier "result"
) ")"
; ";"
} "}"
catch_clause
catch "catch"
( "("
identifier "error"
) ")"
statement_block
{ "{"
expression_statement
call_expression
member_expression
identifier "console"
. "."
property_identifier "error"
arguments
( "("
string
" "\""
string_fragment "Error:"
" "\""
, ","
member_expression
identifier "error"
. "."
property_identifier "message"
) ")"
; ";"
} "}"