Merge remote-tracking branch 'origin/master'

This commit is contained in:
Konstantin Bulenkov
2016-10-28 01:28:40 +02:00
18 changed files with 205 additions and 576 deletions
@@ -197,6 +197,12 @@ class CompilerReferenceReader {
if (result.add(curClass)) {
if (checkBaseClassAmbiguity || curClass != hierarchyElement) {
final Collection<Integer> definitionFiles = myIndex.getBackwardClassDefinitionMap().get(curClass);
if (definitionFiles == null) {
//diagnostic
String baseHierarchyElement = getNameEnumerator().getName(hierarchyElement.getName());
String curHierarchyElement = getNameEnumerator().getName(curClass.getName());
LOG.error("Can't get definition files for :" + curHierarchyElement + " base class: " + baseHierarchyElement);
}
if (definitionFiles.size() != 1) {
return null;
}
@@ -0,0 +1,7 @@
class Bar {
void m() {
System.out.println(Foo.CONST);
}
}
@@ -0,0 +1,5 @@
public class Foo {
public static final String CONST = "value";
}
@@ -0,0 +1,6 @@
/**
* {@link System}
*/
class Foo {
}
@@ -0,0 +1,7 @@
class Foo {
void m() {
System.out.println("");
}
}
@@ -0,0 +1,9 @@
import java.util.Collections;
class Foo {
void m() {
Collections.emptyList();
}
}
@@ -16,26 +16,81 @@
package com.intellij.compiler;
import com.intellij.JavaTestUtil;
import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiReference;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.tree.injected.MyTestInjector;
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl;
import com.intellij.psi.search.searches.MethodReferencesSearch;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.testFramework.CompilerTester;
import com.intellij.testFramework.SkipSlowTestLocally;
@SkipSlowTestLocally
public class CompilerReferencesFindUsagesTest extends CompilerReferencesTestBase {
public class CompilerReferencesFindUsagesTest extends DaemonAnalyzerTestCase {
//TODO merge tests
private boolean myDefaultEnableState;
private CompilerTester myCompilerTester;
@Override
public void setUp() throws Exception {
myDefaultEnableState = CompilerReferenceService.IS_ENABLED_KEY.asBoolean();
CompilerReferenceService.IS_ENABLED_KEY.setValue(true);
super.setUp();
myCompilerTester = new CompilerTester(myModule);
}
@Override
public void tearDown() throws Exception {
try {
CompilerReferenceService.IS_ENABLED_KEY.setValue(myDefaultEnableState);
myCompilerTester.tearDown();
}
finally {
myCompilerTester = null;
super.tearDown();
}
}
protected String getTestDataPath() {
return JavaTestUtil.getJavaTestDataPath() + "/compiler/compilerReferenceFindUsages/";
}
public void testFindUsagesInInjectedCode() {
public void testLibMethodUsage() throws Exception {
configureByFile(getName() + "/Foo.java");
myCompilerTester.rebuild();
PsiMethod methodToSearch = myJavaFacade.findClass(CommonClassNames.JAVA_UTIL_COLLECTIONS).findMethodsByName("emptyList", false)[0];
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
}
public void testLibClassUsage() throws Exception {
configureByFile(getName() + "/Foo.java");
myCompilerTester.rebuild();
PsiClass classForSearch = myJavaFacade.findClass("java.lang.System");
assertOneElement(ReferencesSearch.search(classForSearch).findAll());
}
public void testLibClassInJavaDocUsage() throws Exception {
configureByFile(getName() + "/Foo.java");
myCompilerTester.rebuild();
PsiClass classForSearch = myJavaFacade.findClass("java.lang.System");
assertOneElement(ReferencesSearch.search(classForSearch).findAll());
}
public void testCompileTimeConstFindUsages() throws Exception {
configureByFiles(getName(), getName() + "/Bar.java", getName() + "/Foo.java");
PsiField classForSearch = findClass("Foo").findFieldByName("CONST", false);
PsiElement referenceBefore = assertOneElement(ReferencesSearch.search(classForSearch).findAll()).getElement();
myCompilerTester.rebuild();
PsiElement referenceAfter = assertOneElement(ReferencesSearch.search(classForSearch).findAll()).getElement();
assertTrue(referenceBefore == referenceAfter);
}
public void testFindUsagesInInjectedCode() throws Exception {
new MyTestInjector(getPsiManager()).injectAll(getTestRootDisposable());
myFixture.configureByFile(getName() + "/Foo.java");
rebuildProject();
PsiClass classForSearch = myFixture.getJavaFacade().findClass("java.lang.System");
configureByFile(getName() + "/Foo.java");
myCompilerTester.rebuild();
PsiClass classForSearch = myJavaFacade.findClass("java.lang.System");
PsiReference reference = assertOneElement(ReferencesSearch.search(classForSearch).findAll());
assertTrue(InjectedLanguageManager.getInstance(getProject()).isInjectedFragment(((PsiReferenceExpressionImpl)reference).getContainingFile()));
assertTrue(InjectedLanguageManager.getInstance(getProject()).isInjectedFragment(reference.getElement().getContainingFile()));
}
}
+6
View File
@@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.1.0)
project(breakgen)
include_directories($ENV{JAVA_HOME}/include $ENV{JAVA_HOME}/include/win32)
add_library(breakgen SHARED AppMain.c)
-24
View File
@@ -1,24 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "breakgen", "breakgen.vcxproj", "{AE14C87F-E99B-4363-BE34-917FAF98258F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AE14C87F-E99B-4363-BE34-917FAF98258F}.Debug|Win32.ActiveCfg = Debug|Win32
{AE14C87F-E99B-4363-BE34-917FAF98258F}.Debug|Win32.Build.0 = Debug|Win32
{AE14C87F-E99B-4363-BE34-917FAF98258F}.Debug|x64.ActiveCfg = Debug|x64
{AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|Win32.ActiveCfg = Release|Win32
{AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|Win32.Build.0 = Release|Win32
{AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|x64.ActiveCfg = Release|x64
{AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
-337
View File
@@ -1,337 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="breakgen"
ProjectGUID="{AE14C87F-E99B-4363-BE34-917FAF98258F}"
RootNamespace="breakgen"
Keyword="Win32Proj"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="C:\Java\jdk1.6.0_14\include;C:\Java\jdk1.6.0_14\include\win32"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="C:\Java\jdk1.6.0_14\include;C:\Java\jdk1.6.0_14\include\win32"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\AppMain.c"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
-157
View File
@@ -1,157 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{AE14C87F-E99B-4363-BE34-917FAF98258F}</ProjectGuid>
<RootNamespace>breakgen</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\bin\win</OutDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\bin\win</OutDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</LinkIncremental>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(JdkPath)\include;$(IncludePath)</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(JdkPath)\include;$(IncludePath)</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(JdkPath)\include;$(IncludePath)</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(JdkPath)\include;$(IncludePath)</IncludePath>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectName)64</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<AdditionalIncludeDirectories>$(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>$(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalIncludeDirectories>$(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>$(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="AppMain.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-22
View File
@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="AppMain.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
+22
View File
@@ -0,0 +1,22 @@
SET CMAKE=%CMAKE_PATH%\bin\cmake
RMDIR /S /Q build32
MKDIR build32
CD build32
SET JAVA_HOME=%JDK_18%
"%CMAKE%" -G "Visual Studio 12 2013" -T v120_xp ..
IF ERRORLEVEL 1 EXIT 1
"%CMAKE%" --build . --config Release
IF ERRORLEVEL 1 EXIT 2
CD ..
RMDIR /S /Q build64
MKDIR build64
CD build64
SET JAVA_HOME=%JDK_18_x64%
"%CMAKE%" -G "Visual Studio 12 2013" -A x64 -T v120_xp ..
IF ERRORLEVEL 1 EXIT 3
"%CMAKE%" --build . --config Release
IF ERRORLEVEL 1 EXIT 4
RENAME Release\breakgen.dll breakgen64.dll
CD ..
@@ -38,7 +38,7 @@ public class UsageViewSettings implements PersistentStateComponent<UsageViewSett
public boolean IS_SHOW_PACKAGES = true;
public boolean IS_SHOW_METHODS = false;
public boolean IS_AUTOSCROLL_TO_SOURCE = false;
public boolean IS_FILTER_DUPLICATED_LINE = false;
public boolean IS_FILTER_DUPLICATED_LINE = true;
public boolean IS_SHOW_MODULES = false;
public boolean IS_PREVIEW_USAGES = false;
public boolean IS_SORT_MEMBERS_ALPHABETICALLY = true;
@@ -310,11 +310,6 @@ public class GraphCommitCellRenderer extends TypeSafeTableCellRenderer<GraphComm
public int getWidth() {
return myWidth;
}
@NotNull
public MyComponent getTemplateComponent() {
return myTemplateComponent;
}
}
private class MyComponentWithFadeOut extends MyComponent {
@@ -31,7 +31,7 @@ public class ConvertInterfaceToClassTest extends IPPTestCase {
fail("Conflict not detected");
}
catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
assertEquals("Functional expression in Test will not compile after converting class <b><code>FunctionalExpressions</code></b> to a class", e.getMessage());
assertEquals("() -> {...} in Test will not compile after converting class <b><code>FunctionalExpressions</code></b> to a class", e.getMessage());
}
}
@@ -522,7 +522,8 @@ public class GitHistoryUtils {
catch (Throwable t) {
if (parseError.isNull()) {
parseError.set(t);
LOG.error("Could not parse \" " + builder.toString() + "\"", t);
LOG.error("Could not parse \" " + StringUtil.escapeStringCharacters(builder.toString()) + "\"\n" +
"Command " + handler.printableCommandLine(), t);
}
}
}, 0);
@@ -537,23 +538,46 @@ public class GitHistoryUtils {
int bufferSize)
throws VcsException {
final StringBuilder buffer = new StringBuilder();
final Ref<Boolean> foundRecordEnd = Ref.create(false);
final Ref<VcsException> ex = new Ref<>();
final AtomicInteger records = new AtomicInteger();
handler.addLineListener(new GitLineHandlerListener() {
@Override
public void onLineAvailable(String line, Key outputType) {
try {
// format of the record is <RECORD_START>.*<RECORD_END>.*
// then next record goes
// (rather inconveniently, after RECORD_END there is a list of modified files)
// so here I'm trying to find text between two RECORD_START symbols
// that simultaneously contains a RECORD_END
// this helps to deal with commits like a929478f6720ac15d949117188cd6798b4a9c286 in linux repo that have RECORD_START symbols in the message
// wont help with RECORD_END symbols in the message however (have not seen those yet)
String tail = null;
int nextRecordStart = line.indexOf(GitLogParser.RECORD_START);
if (nextRecordStart == -1) {
buffer.append(line).append("\n");
if (!foundRecordEnd.get()) {
int recordEnd = line.indexOf(GitLogParser.RECORD_END);
if (recordEnd != -1) {
foundRecordEnd.set(true);
buffer.append(line.substring(0, recordEnd + 1));
line = line.substring(recordEnd + 1);
}
else {
buffer.append(line).append("\n");
}
}
else if (nextRecordStart == 0) {
tail = line + "\n";
}
else {
buffer.append(line.substring(0, nextRecordStart));
tail = line.substring(nextRecordStart) + "\n";
if (foundRecordEnd.get()) {
int nextRecordStart = line.indexOf(GitLogParser.RECORD_START);
if (nextRecordStart == -1) {
buffer.append(line).append("\n");
}
else if (nextRecordStart == 0) {
tail = line + "\n";
}
else {
buffer.append(line.substring(0, nextRecordStart));
tail = line.substring(nextRecordStart) + "\n";
}
}
if (tail != null) {
@@ -562,6 +586,7 @@ public class GitHistoryUtils {
buffer.setLength(0);
}
buffer.append(tail);
foundRecordEnd.set(false);
}
}
catch (Exception e) {
@@ -26,6 +26,8 @@ import com.intellij.util.ArrayUtil;
import com.intellij.util.Consumer;
import com.intellij.util.ExceptionUtil;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.vcs.log.VcsFullCommitDetails;
import com.intellij.vcsUtil.VcsUtil;
import git4idea.GitFileRevision;
import git4idea.GitRevisionNumber;
@@ -134,7 +136,8 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
String[] parents;
if (details.length > 2) {
parents = details[2].split(" ");
} else {
}
else {
parents = ArrayUtil.EMPTY_STRING_ARRAY;
}
final GitTestRevision revision = new GitTestRevision(details[0], details[1], parents, commitMessages[i],
@@ -290,14 +293,14 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
@Test
public void testGetCurrentRevision() throws Exception {
GitRevisionNumber revisionNumber = (GitRevisionNumber) GitHistoryUtils.getCurrentRevision(myProject, toFilePath(bfile), null);
GitRevisionNumber revisionNumber = (GitRevisionNumber)GitHistoryUtils.getCurrentRevision(myProject, toFilePath(bfile), null);
assertEquals(revisionNumber.getRev(), myRevisions.get(0).myHash);
assertEquals(revisionNumber.getTimestamp(), myRevisions.get(0).myDate);
}
@Test
public void testGetCurrentRevisionInMasterBranch() throws Exception {
GitRevisionNumber revisionNumber = (GitRevisionNumber) GitHistoryUtils.getCurrentRevision(myProject, toFilePath(bfile), "master");
GitRevisionNumber revisionNumber = (GitRevisionNumber)GitHistoryUtils.getCurrentRevision(myProject, toFilePath(bfile), "master");
assertEquals(revisionNumber.getRev(), myRevisions.get(0).myHash);
assertEquals(revisionNumber.getTimestamp(), myRevisions.get(0).myDate);
}
@@ -309,7 +312,7 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
addCommit("new content");
final String[] output = log("master --pretty=%H#%at", "-n1").trim().split("#");
GitRevisionNumber revisionNumber = (GitRevisionNumber) GitHistoryUtils.getCurrentRevision(myProject, toFilePath(bfile), "master");
GitRevisionNumber revisionNumber = (GitRevisionNumber)GitHistoryUtils.getCurrentRevision(myProject, toFilePath(bfile), "master");
assertEquals(revisionNumber.getRev(), output[0]);
assertEquals(revisionNumber.getTimestamp(), GitTestRevision.gitTimeStampToDate(output[1]));
}
@@ -323,7 +326,7 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
public void testGetLastRevisionForExistingFile() throws Exception {
final ItemLatestState state = GitHistoryUtils.getLastRevision(myProject, toFilePath(bfile));
assertTrue(state.isItemExists());
final GitRevisionNumber revisionNumber = (GitRevisionNumber) state.getNumber();
final GitRevisionNumber revisionNumber = (GitRevisionNumber)state.getNumber();
assertEquals(revisionNumber.getRev(), myRevisions.get(0).myHash);
assertEquals(revisionNumber.getTimestamp(), myRevisions.get(0).myDate);
}
@@ -378,7 +381,7 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
@Test
public void testOnlyHashesHistory() throws Exception {
final List<Pair<SHAHash,Date>> history = GitHistoryUtils.onlyHashesHistory(myProject, toFilePath(bfile), myProjectRoot);
final List<Pair<SHAHash, Date>> history = GitHistoryUtils.onlyHashesHistory(myProject, toFilePath(bfile), myProjectRoot);
assertEquals(history.size(), myRevisionsAfterRename.size());
Iterator<GitTestRevision> itAfterRename = myRevisionsAfterRename.iterator();
for (Pair<SHAHash, Date> pair : history) {
@@ -388,10 +391,25 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
}
}
@Test
public void testLoadingDetailsWithU0001Character() throws Exception {
List<VcsFullCommitDetails> details = ContainerUtil.newArrayList();
String message = "subject containing \u0001 symbol in it\n\ncommit body containing \u0001 symbol in it";
touch("file.txt", "content");
addCommit(message);
GitHistoryUtils.loadAllDetails(myProject, myRepo.getRoot(), details::add);
VcsFullCommitDetails lastCommit = ContainerUtil.getFirstItem(details);
assertNotNull(lastCommit);
assertEquals(message, lastCommit.getFullMessage());
}
private void assertHistory(@NotNull List<? extends VcsFileRevision> actualRevisions) throws IOException, VcsException {
assertEquals("Incorrect number of commits in history", myRevisions.size(), actualRevisions.size());
for (int i = 0; i < actualRevisions.size(); i++) {
assertEqualRevisions((GitFileRevision) actualRevisions.get(i), myRevisions.get(i));
assertEqualRevisions((GitFileRevision)actualRevisions.get(i), myRevisions.get(i));
}
}
@@ -424,7 +442,16 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
final byte[] myContent;
private String[] myParents;
public GitTestRevision(String hash, String gitTimestamp, String[] parents, String commitMessage, String authorName, String authorEmail, String committerName, String committerEmail, String branch, String content) {
public GitTestRevision(String hash,
String gitTimestamp,
String[] parents,
String commitMessage,
String authorName,
String authorEmail,
String committerName,
String committerEmail,
String branch,
String content) {
myHash = hash;
myDate = gitTimeStampToDate(gitTimestamp);
myParents = parents;
@@ -443,8 +470,7 @@ public class GitHistoryUtilsTest extends GitSingleRepoTest {
}
public static Date gitTimeStampToDate(String gitTimestamp) {
return new Date(Long.parseLong(gitTimestamp)*1000);
return new Date(Long.parseLong(gitTimestamp) * 1000);
}
}
}