From bf473f79704ac219bef65578fe2099ef7f9afdd1 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Mon, 25 Jan 2016 14:09:48 +0300 Subject: [PATCH 1/7] [mvc] fix text and description for 'Run Command' action --- plugins/groovy/src/META-INF/plugin.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml index 2f63276b7674..6051655dedf6 100644 --- a/plugins/groovy/src/META-INF/plugin.xml +++ b/plugins/groovy/src/META-INF/plugin.xml @@ -1700,7 +1700,8 @@ description="Refresh IntelliJ IDEA project structure so that it matches Griffon build settings"> - + From aad922c6ef58212aa084c6e5c9a42b1a0074e272 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 25 Jan 2016 13:37:26 +0300 Subject: [PATCH 2/7] vcs: @NotNull --- .../openapi/vcs/VcsConfiguration.java | 2 +- .../vcs-impl/src/com/intellij/diff/Block.java | 5 ++-- .../vcs/history/impl/VcsHistoryDialog.java | 26 +++++++++---------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsConfiguration.java b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsConfiguration.java index 71d3d926b40d..57688b4b5919 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsConfiguration.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsConfiguration.java @@ -166,7 +166,7 @@ public final class VcsConfiguration implements PersistentStateComponent Date: Mon, 25 Jan 2016 13:40:59 +0300 Subject: [PATCH 3/7] vcs: log error on invalid Block range --- platform/vcs-impl/src/com/intellij/diff/Block.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/platform/vcs-impl/src/com/intellij/diff/Block.java b/platform/vcs-impl/src/com/intellij/diff/Block.java index 432ae082d514..da459b528655 100644 --- a/platform/vcs-impl/src/com/intellij/diff/Block.java +++ b/platform/vcs-impl/src/com/intellij/diff/Block.java @@ -15,6 +15,7 @@ */ package com.intellij.diff; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.LineTokenizer; import com.intellij.util.diff.Diff; import org.jetbrains.annotations.NotNull; @@ -26,6 +27,8 @@ import java.util.List; * author: lesya */ public class Block { + private static final Logger LOG = Logger.getInstance(Block.class); + @NotNull private final String[] mySource; private final int myStart; private final int myEnd; @@ -35,6 +38,10 @@ public class Block { } public Block(@NotNull String[] source, int start, int end) { + if (start < 0 || end > source.length || end < start) { + LOG.error("Invalid block range: [" + start + ", " + end + "); length - " + source.length); + } + mySource = source; myStart = start; myEnd = end; From 72b8164e21d64cafb4757eb3e0fdedcc7655d0ae Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 25 Jan 2016 13:41:57 +0300 Subject: [PATCH 4/7] vcs: use util method we can rely on implementation of AbstractList.equals() --- platform/vcs-impl/src/com/intellij/diff/Block.java | 10 ++-------- .../openapi/vcs/history/impl/VcsHistoryDialog.java | 11 +---------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/diff/Block.java b/platform/vcs-impl/src/com/intellij/diff/Block.java index da459b528655..42c8ab528784 100644 --- a/platform/vcs-impl/src/com/intellij/diff/Block.java +++ b/platform/vcs-impl/src/com/intellij/diff/Block.java @@ -17,6 +17,7 @@ package com.intellij.diff; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.LineTokenizer; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.diff.Diff; import org.jetbrains.annotations.NotNull; @@ -84,14 +85,7 @@ public class Block { @NotNull public String getBlockContent() { - StringBuilder result = new StringBuilder(); - - for (int i = 0; i < myEnd - myStart; i++) { - if (i != 0) result.append("\n"); - result.append(mySource[i + myStart]); - } - - return result.toString(); + return StringUtil.join(getLines(), "\n"); } @NotNull diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java index fbacb79204cb..e3f4c97bedfd 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java @@ -34,7 +34,6 @@ import com.intellij.openapi.ui.FrameWrapper; import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.ui.popup.util.PopupUtil; -import com.intellij.openapi.util.Comparing; import com.intellij.openapi.vcs.*; import com.intellij.openapi.vcs.history.*; import com.intellij.openapi.vfs.VirtualFile; @@ -308,7 +307,7 @@ public class VcsHistoryDialog extends FrameWrapper implements DataProvider { for (int i = firstRevision - 1; i >= 0; i--) { Block block1 = getBlock(i + 1); Block block2 = getBlock(i); - if (orderedEquals(block1.getLines(), block2.getLines())) continue; + if (block1.getLines().equals(block2.getLines())) continue; result.add(myRevisions.get(i)); } @@ -452,12 +451,4 @@ public class VcsHistoryDialog extends FrameWrapper implements DataProvider { } return myBlocks.get(index); } - - private static boolean orderedEquals(@NotNull List data1, @NotNull List data2) { - if (data1.size() != data2.size()) return false; - for (int i = 0; i < data1.size(); i++) { - if (!Comparing.equal(data1.get(i), data2.get(i))) return false; - } - return true; - } } From ad9e415efc59d0092948aff03838dabcda998308 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 25 Jan 2016 13:47:18 +0300 Subject: [PATCH 5/7] vcs: do not put VcsRevisionNumber.LOCAL to api --- .../vcs/history/VcsRevisionNumber.java | 17 ----------------- .../vcs/history/impl/VcsHistoryDialog.java | 19 ++++++++++++++++++- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/platform/vcs-api/vcs-api-core/src/com/intellij/openapi/vcs/history/VcsRevisionNumber.java b/platform/vcs-api/vcs-api-core/src/com/intellij/openapi/vcs/history/VcsRevisionNumber.java index 2e7354e90ea1..36b73bce7ab5 100644 --- a/platform/vcs-api/vcs-api-core/src/com/intellij/openapi/vcs/history/VcsRevisionNumber.java +++ b/platform/vcs-api/vcs-api-core/src/com/intellij/openapi/vcs/history/VcsRevisionNumber.java @@ -32,23 +32,6 @@ public interface VcsRevisionNumber extends Comparable{ } }; - VcsRevisionNumber LOCAL = new VcsRevisionNumber() { - @Override - public String asString() { - return "Local Changes"; - } - - @Override - public int compareTo(@NotNull VcsRevisionNumber vcsRevisionNumber) { - return 0; - } - - @Override - public String toString() { - return asString(); - } - }; - class Int implements VcsRevisionNumber, LongRevisionNumber { private final int myValue; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java index e3f4c97bedfd..febe489ad974 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java @@ -65,6 +65,23 @@ import static com.intellij.util.ObjectUtils.notNull; public class VcsHistoryDialog extends FrameWrapper implements DataProvider { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.history.impl.VcsHistoryDialog"); + private static final VcsRevisionNumber LOCAL_REVISION_NUMBER = new VcsRevisionNumber() { + @Override + public String asString() { + return "Local Changes"; + } + + @Override + public int compareTo(@NotNull VcsRevisionNumber vcsRevisionNumber) { + return 0; + } + + @Override + public String toString() { + return asString(); + } + }; + private static final ColumnInfo REVISION = new ColumnInfo(VcsBundle.message("column.name.revision.version")) { @Override public Object valueOf(Object object) { @@ -158,7 +175,7 @@ public class VcsHistoryDialog extends FrameWrapper implements DataProvider { myDiffPanel = DiffManager.getInstance().createRequestPanel(myProject, this, getFrame()); - myRevisions.add(new CurrentRevision(file, VcsRevisionNumber.LOCAL)); + myRevisions.add(new CurrentRevision(file, LOCAL_REVISION_NUMBER)); myRevisions.addAll(session.getRevisionList()); myBlocks.addAll(Collections.nCopies(myRevisions.size(), null)); From c8f7973a52dbef8826aa12c8046323d9dbe87873 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 25 Jan 2016 12:35:04 +0100 Subject: [PATCH 6/7] cleanup, do not compute transpiled file if no name mappigns in the sourcemap, add logging if document line cound < source map entry transpiled line --- .../jetbrains/javascript/debugger/NameMapper.kt | 14 ++++++++++---- platform/util/resources/misc/registry.properties | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/platform/script-debugger/debugger-ui/src/com/jetbrains/javascript/debugger/NameMapper.kt b/platform/script-debugger/debugger-ui/src/com/jetbrains/javascript/debugger/NameMapper.kt index 29e0d8efe864..31c4f8e6415a 100644 --- a/platform/script-debugger/debugger-ui/src/com/jetbrains/javascript/debugger/NameMapper.kt +++ b/platform/script-debugger/debugger-ui/src/com/jetbrains/javascript/debugger/NameMapper.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package com.jetbrains.javascript.debugger import com.google.common.base.CharMatcher import com.intellij.openapi.editor.Document import com.intellij.openapi.util.registry.Registry +import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiElement import com.intellij.psi.PsiNamedElement import gnu.trove.THashMap @@ -26,14 +27,14 @@ import org.jetbrains.debugger.sourcemap.MappingList import org.jetbrains.debugger.sourcemap.SourceMap import org.jetbrains.rpc.LOG - private val S1 = ",()[]{}=" // don't trim trailing .&: - could be part of expression private val OPERATOR_TRIMMER = CharMatcher.INVISIBLE.or(CharMatcher.anyOf(S1)) val NAME_TRIMMER = CharMatcher.INVISIBLE.or(CharMatcher.anyOf(S1 + ".&:")) -open class NameMapper(private val document: Document, private val generatedDocument: Document, private val sourceMappings: MappingList, private val sourceMap: SourceMap) { +// generateVirtualFile only for debug purposes +open class NameMapper(private val document: Document, private val transpiledDocument: Document, private val sourceMappings: MappingList, private val sourceMap: SourceMap, private val transpiledFile: VirtualFile? = null) { var rawNameToSource: MutableMap? = null private set @@ -55,7 +56,12 @@ open class NameMapper(private val document: Document, private val generatedDocum return null } - val generatedName = extractName(getGeneratedName(generatedDocument, sourceMap, sourceEntry)) + if (sourceEntry.generatedLine > document.lineCount) { + LOG.warn("Cannot get generated name: source entry line ${sourceEntry.generatedLine} > ${document.lineCount}. Transpiled File: " + transpiledFile?.path) + return null + } + + val generatedName = extractName(getGeneratedName(transpiledDocument, sourceMap, sourceEntry)) if (generatedName.isEmpty()) { return null } diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index 5e7eda0a1f22..20827b259ea1 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -546,6 +546,7 @@ nodejs.debugger.use.jb.support=true js.debugger.name.mappings.by.source.code=false js.debugger.v8.log= js.debugger.wip.log= +js.debugger.member.filter.prefer.vm.source=false js.index.node.submodules=false From 68cf507efaeb65953fe58a5e6742d062100ff8bb Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Fri, 22 Jan 2016 13:01:39 +0300 Subject: [PATCH 7/7] ContainerUtil.zip --- .../util/containers/ContainerUtil.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index 4c0a8fd7d828..9ac798932f25 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -20,6 +20,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.*; +import com.intellij.util.Function; import gnu.trove.*; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -1212,6 +1213,36 @@ public class ContainerUtil extends ContainerUtilRt { }; } + @NotNull + @Contract(pure=true) + public static Iterable> zip(@NotNull final Iterable iterable1, @NotNull final Iterable iterable2) { + return new Iterable>() { + @Override + public Iterator> iterator() { + return new Iterator>() { + private final Iterator i1 = iterable1.iterator(); + private final Iterator i2 = iterable2.iterator(); + + @Override + public boolean hasNext() { + return i1.hasNext() && i2.hasNext(); + } + + @Override + public Pair next() { + return Pair.create(i1.next(), i2.next()); + } + + @Override + public void remove() { + i1.remove(); + i2.remove(); + } + }; + } + }; + } + public static void swapElements(@NotNull List list, int index1, int index2) { E e1 = list.get(index1); E e2 = list.get(index2);