Implement fir to html dump

This commit is contained in:
Simon Ogorodnik
2019-04-12 21:33:27 +03:00
committed by Mikhail Glukhikh
parent 32e941cb53
commit 61b410e276
7 changed files with 1577 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
/*
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
plugins {
kotlin("jvm")
id("jps-compatible")
}
repositories {
maven { setUrl("https://dl.bintray.com/kotlin/kotlinx.html/") }
}
dependencies {
compile(project(":core:descriptors"))
compile(project(":core:deserialization"))
compile(project(":compiler:fir:cones"))
compile(project(":compiler:fir:tree"))
compile(project(":compiler:fir:resolve"))
compile(project(":compiler:fir:java"))
compile(project(":compiler:cli"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
compile("org.jetbrains.kotlinx:kotlinx-html-jvm:0.6.12")
}
sourceSets {
"main" { projectDefault() }
}
testsJar()
@@ -0,0 +1,81 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
body.dark {
background-color: #2b2b2b;
color: #bababa;
}
.dark .toggle-theme {
background-color: #6a7878;
}
.dark .return-label {
color: #6a7878;
background-color: #333333;
}
.dark .label {
color: dodgerblue;
background-color: #333333;
}
.dark .expression-type {
color: #6a7878;
background-color: #333333;
}
.dark .keyword {
color: #8ba558;
}
.dark a.ref.selected {
background-color: rgba(77, 255, 27, 0.44);
}
.dark .unresolved {
text-decoration-color: blue;
}
.dark .error {
text-decoration-color: red;
}
.dark .error.unsupported {
text-decoration-color: cyan;
}
.dark a.ref.external {
color: #bababa;
}
.dark a.container-ref,
.dark a.ref,
.dark a.ref:visited,
.dark a.package-fqn,
.dark a.package-fqn:visited {
color: rgb(223, 190, 149);
}
.dark a.container-ref:visited {
color: rgb(223, 185, 67);
}
.dark :target {
background-color: #9f5000;
}
.dark .string-literal {
color: #98b884;
}
.dark .declaration .simple-name {
color: #dfb943
}
.dark .line {
background-color: #313335;
border-right: thin solid darkgray;
}
@@ -0,0 +1,70 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
.dark .toggle-theme {
background-color: #dfdfdf;
}
.white .return-label {
background-color: lightgray;
}
.white .label {
color: dodgerblue;
background-color: lightgray;
}
.white .expression-type {
background-color: lightgray;
}
.white .keyword {
color: #8ba558;
}
.white a.ref.selected {
background-color: rgba(77, 255, 27, 0.44);
}
.white .unresolved {
text-decoration-color: blue;
}
.white .error {
text-decoration-color: red;
}
.white .error.unsupported {
text-decoration-color: cyan;
}
.white a.ref.external {
color: black;
}
.white a.container-ref,
.white a.ref,
.white a.ref:visited,
.white a.package-fqn,
.white a.package-fqn:visited {
color: rgb(0, 0, 238);
}
.white :target {
background-color: yellow;
}
.white .string-literal {
color: #98b884;
}
.white .declaration .simple-name {
font-weight: bold;
}
.white .line {
background-color: lightgray;
border-right: thin solid darkgray;
}
@@ -0,0 +1,79 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
function updateSelectedRefs() {
$("a.ref.selected").removeClass("selected");
$("a.ref").each(function () {
if ($(this).attr("jshref") == window.location.href) {
$(this).addClass("selected");
}
});
}
var key = "fir-dump-theme";
var theme = localStorage.getItem(key);
if (!theme) {
theme = "white"
}
function toggleTheme() {
var body = $("body");
body.removeClass(theme);
if (theme === "white") {
theme = "dark"
}
else {
theme = "white"
}
body.addClass(theme);
localStorage.setItem(key, theme);
}
$(document).ready(function () {
$(".fold-container").click(function (event) {
$(this).toggleClass("unfold");
event.stopPropagation();
});
var refs = $('a.ref:not(.external)');
refs.each(function () {
var href = $(this).prop('href');
$(this).attr('href', 'javascript:void(0);');
$(this).attr('jshref', href);
});
refs.bind('click', function (e) {
var href = $(this).attr('jshref');
if (!e.metaKey && e.ctrlKey) {
e.metaKey = e.ctrlKey;
}
if (e.metaKey) {
location.href = href;
return false;
}
});
updateSelectedRefs();
$(window).on('hashchange', function (e) {
updateSelectedRefs()
});
var body = $("body");
body.prepend("<button class='toggle-theme' onclick='toggleTheme()'>💡</button>");
body.addClass(theme);
});
window.onload = function () {
var $line = $('.line');
var maxWidth = Math.max.apply(Math, $line.map(function () {
return $(this).width();
}).get());
$line.each(function () {
$(this).width(maxWidth)
})
};
@@ -0,0 +1,61 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
pre {
counter-reset: line;
}
.line:after {
content: counter(line);
-webkit-user-select: none;
padding-right: 5px;
margin-right: 0;
margin-left: auto;
}
.line {
counter-increment: line;
display: inline-flex;
}
.unresolved {
text-decoration-style: wavy;
text-decoration: underline;
}
.error {
text-decoration-style: wavy;
text-decoration: underline;
}
a.container-ref,
a.package-fqn,
a.ref {
text-decoration: none;
}
.expression-type, .label, .return-label {
border-radius: 5px;
padding-left: 5px;
padding-right: 5px;
}
.fold-region {
display: none;
}
.fold-container.unfold > .fold-region {
display: inline;
}
.toggle-theme {
border-style: solid;
border-width: thin;
border-radius: 10px;
}
.line {
margin-right: 5px;
}
File diff suppressed because it is too large Load Diff
+1
View File
@@ -36,6 +36,7 @@ include ":kotlin-build-common",
":compiler:fir:resolve",
":compiler:fir:java",
":compiler:fir:modularized-tests",
":compiler:fir:dump",
":compiler:frontend",
":compiler:frontend.common",
":compiler:frontend.java",