Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: error and warning markings in IDE editor #1513

Merged
merged 5 commits into from Jun 30, 2023
Merged

feat: error and warning markings in IDE editor #1513

merged 5 commits into from Jun 30, 2023

Conversation

liangyiliang
Copy link
Contributor

@liangyiliang liangyiliang commented Jun 27, 2023

Description

Since many types of warnings and errors include source location information, we can utilize these information to mark them in the IDE editor.

Implementation strategy and design decisions

  1. We write a function, errLocs, that extracts the location information (which file, which row, which column) from each error and warning, except StyleErrorList. StyleErrorList essentially stores multiple Style errors, so we handle them specially.
  2. For errors and warnings with location information, the IDE editor now draws red squiggly lines at places for errors, and yellow squiggly lines at places for warnings.
  3. These squiggly lines update after every time the "compile" button is pressed.

Checklist

  • I have commented my code, particularly in hard-to-understand areas
  • I have reviewed any generated registry diagram changes

@github-actions
Copy link

github-actions bot commented Jun 27, 2023

± Registry diff

📊 Performance

Key

Note that each bar component rounds up to the nearest 100ms, so each full bar is an overestimate by up to 400ms.

     0s   1s   2s   3s   4s   5s   6s   7s   8s
     |    |    |    |    |    |    |    |    |
name ▝▀▀▀▀▀▀▀▀▀▚▄▄▄▄▄▄▄▄▞▀▀▀▀▀▀▀▀▀▀▚▄▄▄▄▄▄▄▄▄▖
      compiling labeling optimizing rendering

If a row has only one bar instead of four, that means it's not a trio and the bar just shows the total time spent for that example, again rounded up to the nearest 100ms.

Data

                                                          0s   1s   2s   3s   4s   5s   6s   7s   8s
                                                          |    |    |    |    |    |    |    |    |
set-theory-domain/tree-venn                               ▝▀▚▚
set-theory-domain/tree-tree                               ▝▀▞▖
group-theory/quaternion-multiplication-table              ▝▀▀▀▄▞▄▖
walk-on-spheres/SignedAngleOutside                        ▝▀▀▀▚▚▖
spectral-graphs/examples/hypercube                        ▝▀▀▚▚▖
group-theory/quaternion-cayley-graph                      ▝▀▞▄
set-theory-domain/tree-venn-3d                            ▝▚▚▖
atoms-and-bonds/one-water-molecule                        ▝▞▖
structural-formula/molecules/caffeine                     ▝▀▀▀▀▄▀▀▄▄
walk-on-spheres/walk-on-stars                             ▝▀▀▀▀▀▞▚▄▄▄
set-theory-domain/continuousmap                           ▝▚▚
mobius/mobius                                             ▝▚▚
linear-algebra-domain/two-vectors-perp                    ▝▚▚
tutorials/tutorial1                                       ▝▞▖
tutorials/tutorial2                                       ▝▞▖
tutorials/tutorial3                                       ▝▞▖
molecules/nitricacid-lewis                                ▝▀▀▚▀▚
exterior-algebra/vector-wedge                             ▝▚▚
shape-spec/all-shapes                                     ▝▚▚▄▄▄▖
shape-spec/arrowheads                                     ▝▞▖
graph-domain/textbook/sec1/fig1                           ▝▀▀▚▀▚
graph-domain/textbook/sec1/fig2                           ▝▀▀▀▚▀▀▖
graph-domain/textbook/sec1/fig3                           ▝▀▀▀▀▚▀▀▀▖
graph-domain/textbook/sec1/fig4                           ▝▀▀▀▀▞▀▀▖
spectral-graphs/examples/hexagonal-lattice                ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▞▀▀▄▄▖
graph-domain/textbook/sec1/fig5                           ▝▀▀▀▀▀▞▀▀▀▚
graph-domain/textbook/sec1/fig6                           ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚
graph-domain/textbook/sec1/fig7                           ▝▀▀▞▄
graph-domain/textbook/sec1/fig8a                          ▝▀▀▀▀▀▞▀▀▚
graph-domain/textbook/sec1/fig8b                          ▝▀▀▀▀▀▞▀▀▀▖
graph-domain/textbook/sec1/fig9                           ▝▀▀▚▀▄
graph-domain/textbook/sec1/fig10                          ▝▀▀▞▄
graph-domain/textbook/sec1/fig11                          ▝▀▀▀▀▞▀▄
graph-domain/textbook/sec1/fig12                          ▝▀▀▀▀▀▚▀▀▚▖
graph-domain/textbook/sec1/fig13                          ▝▀▀▀▀▞▀▀▖
graph-domain/textbook/sec2/fig3                           ▝▀▀▀▀▀▀▀▀▀▞▀▀▀▀▀▚
graph-domain/textbook/sec2/fig4                           ▝▀▀▀▀▀▞▀▀▀▖
graph-domain/textbook/sec2/fig5                           ▝▀▀▀▀▀▀▀▀▞▀▀▀▀▚
graph-domain/textbook/sec2/fig6                           ▝▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▚
graph-domain/textbook/sec2/fig9                           ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▞▀▀▀▀▀▀▀▀▖
graph-domain/textbook/sec2/fig10a                         ▝▀▀▀▞▀▚
graph-domain/textbook/sec2/fig10b                         ▝▀▀▚▀▄
graph-domain/textbook/sec2/fig11a                         ▝▀▚▚▖
graph-domain/textbook/sec2/fig11b                         ▝▀▀▞▄
graph-domain/textbook/sec2/fig11c                         ▝▀▚▚▖
graph-domain/textbook/sec2/fig12                          ▝▀▚▚
graph-domain/textbook/sec2/fig13                          ▝▀▀▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▖
graph-domain/textbook/sec2/fig14                          ▝▀▀▀▀▞▚▄
graph-domain/textbook/sec2/fig16b                         ▝▀▚▚▖
geometry-domain/textbook_problems/c05p13                  ▝▀▀▞▖
geometry-domain/textbook_problems/c01p01                  ▝▀▚▚
geometry-domain/textbook_problems/c03p01                  ▝▀▚▚
geometry-domain/textbook_problems/c05p01                  ▝▀▚▚
geometry-domain/textbook_problems/ex                      ▝▀▀▀▞▀▖
triangle-mesh-3d/two-triangles                            ▝▚▚
random-sampling/test                                      ▝▀▀▀▀▞▄
geometry-domain/textbook_problems/c11p12                  ▝▀▀▞▚
curve-examples/catmull-rom/catmull-rom                    ▝▚▚
word-cloud/example                                        ▝▀▚▀▚
geometry-domain/siggraph-teaser                           ▝▀▀▞▖
minkowski-tests/maze/non-convex                           ▝▚▚
lagrange-bases/lagrange-bases                             ▝▚▚
hypergraph/hypergraph                                     ▝▀▀▀▀▞▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▖
persistent-homology/persistent-homology                   ▝▀▀▞▀▀▀▀▀▀▚▖
walk-on-spheres/laplace-estimator                         ▝▀▀▞▖
walk-on-spheres/poisson-estimator                         ▝▀▀▞▖
walk-on-spheres/nested-estimator                          ▝▀▀▀▀▞▄
walk-on-spheres/offcenter-estimator                       ▝▀▀▞▖
shape-distance/points-around-star                         ▝▀▀▀▞▄
shape-distance/points-around-polyline                     ▝▀▀▞▖
shape-distance/points-around-line                         ▝▀▚▚
shape-distance/lines-around-rect                          ▝▀▞▖
fake-3d-linear-algebra/projection                         ▝▞▖
animation/center-shrink-circle                            ▝▞▖
graph-domain/other-examples/hamiltonian-cycle             ▝▀▀▀▀▞▀▚
structural-formula/reactions/methane-combustion           ▝▀▀▀▞▀▀▀▀▀▀▖
molecules/glutamine                                       ▝▀▞▖
matrix-ops/tests/matrix-matrix-addition                   ▝▚▚
matrix-ops/tests/matrix-matrix-division-elementwise       ▝▚▚
matrix-ops/tests/matrix-matrix-multiplication-elementwise ▝▀▚▚
matrix-ops/tests/matrix-matrix-multiplication             ▝▀▞▖
matrix-ops/tests/matrix-matrix-subtraction                ▝▚▚
matrix-ops/tests/matrix-transpose                         ▝▚▚
matrix-ops/tests/matrix-vector-left-multiplication        ▝▚▚
matrix-ops/tests/matrix-vector-right-multiplication       ▝▚▚
matrix-ops/tests/scalar-vector-division                   ▝▚▚
matrix-ops/tests/scalar-vector-left-multiplication        ▝▚▚
matrix-ops/tests/scalar-vector-right-multiplication       ▝▚▚
matrix-ops/tests/vector-vector-addition                   ▝▚▚
matrix-ops/tests/vector-vector-division-elementwise       ▝▚▚
matrix-ops/tests/vector-vector-multiplication-elementwise ▝▚▚
matrix-ops/tests/vector-vector-outerproduct               ▝▚▚
matrix-ops/tests/vector-vector-subtraction                ▝▚▚
logic-circuit-domain/half-adder                           ▝▚▚
curve-examples/cubic-bezier                               ▝▀▞▀▀▖
triangle-mesh-2d/diagrams/cotan-formula                   ▝▀▚▚
triangle-mesh-2d/diagrams/concyclic-pair                  ▝▀▞▚
triangle-mesh-2d/diagrams/halfedge-mesh                   ▝▀▚▚
triangle-mesh-2d/diagrams/relative-orientation            ▝▀▞▖
triangle-mesh-2d/diagrams/triangle-centers                ▝▀▞▖
triangle-mesh-2d/diagrams/angle-equivalence               ▝▀▀▀▞▀▀▖
timeline/penrose                                          ▝▀▀▀▚▀▖
graph-domain/textbook/sec5/ex32                           ▝▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▚
curve-examples/open-elastic-curve                         ▝▀▀▀▞▀▖
curve-examples/closed-elastic-curve                       ▝▀▀▞▀▖
graph-domain/other-examples/arpanet                       ▝▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚▖
graph-domain/other-examples/nyc-subway                    ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▖
fancy-text/fancy-text                                     ▝▀▚▀▚
curve-examples/blobs                                      ▝▀▀▀▀▀▀▀▞▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▖
curve-examples/space-curves                               ▝▀▀▀▀▀▀▞▀▀▀▀▖
geometric-queries/ray-intersect/test-group                ▝▀▀▀▀▀▀▀▀▀▚▚▖
ray-tracing/path-trace                                    ▝▀▀▞▖
ray-tracing/bidirectional                                 ▝▀▀▞▖
ray-tracing/next-event-estimation                         ▝▀▀▚▚
geometric-queries/test                                    ▝▀▚▚
geometric-queries/closest-point/test-group                ▝▀▞▖
geometric-queries/closest-point/test                      ▝▚▚
geometric-queries/closest-silhouette-point/test           ▝▚▚
geometric-queries/ray-intersect/test                      ▝▀▀▀▀▀▀▀▀▀▞▄▄
box-arrow-diagram/computer-architecture                   ▝▀▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚
stochastic-process/stochastic-process                     ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▞▄▄▄▄▖
stochastic-process/epsilon-shell/AbsorbingBoundary        ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▞▄▄▄▄▄▄▄▄▄▄▄▖
solid/eigenspace                                          ▐█▌
solid/triangles                                           ▐█▌
solid/vectors                                             ▐█
tsne/tsne                                                 ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▄▄▄▄▄▄▄▄▄▄
spectral-graphs/examples/4x4-sudoku-graph                 ▝▀▀▀▞▄
spectral-graphs/examples/dodecahedral-graph               ▝▀▚▚▖
atoms-and-bonds/wet-floor                                 ▝▚▀▖

@cloudflare-pages
Copy link

cloudflare-pages bot commented Jun 27, 2023

Deploying with  Cloudflare Pages  Cloudflare Pages

Latest commit: 801aa99
Status: ✅  Deploy successful!
Preview URL: https://155842a1.penrose-72l.pages.dev
Branch Preview URL: https://squig.penrose-72l.pages.dev

View logs

@liangyiliang liangyiliang marked this pull request as ready for review June 27, 2023 20:55
Copy link
Member

@wodeni wodeni left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Thanks for getting to this issue finally. Testing this on the preview deployment felt great 💯

@@ -608,6 +612,246 @@ canvas {
}
};

export const errLocs = (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another way would be to add this to an umbrella type so every error is required to identify the offending source location. This is also fine, but the downside is yet another place to update when a new error is added.

range: SourceRange;
};

export const toErrorLoc = (node: {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this function only renaming and grouping some values? Looks like you had to do some work when feeding them to monaco anyway. Why is this step necessary?

@liangyiliang liangyiliang merged commit c91a6c9 into main Jun 30, 2023
10 checks passed
@liangyiliang liangyiliang deleted the squig branch June 30, 2023 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants