From 4e20c7fbcf16882005180e8dda7a62fd3496e51c Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Tue, 18 Mar 2014 14:33:45 +0400 Subject: [PATCH] IDEA-121779 set correct context when creating extracted method body. If there is no correct context set original used classes are over covered by the classes imported by default. So the extracted class gets broken. --- .../refactoring/extract/ExtractUtil.java | 4 +--- .../extract/method/ExtractMethodTest.groovy | 7 +++++- .../extractMethod/classVsDefaultGDKClass.test | 24 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 plugins/groovy/testdata/groovy/refactoring/extractMethod/classVsDefaultGDKClass.test diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ExtractUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ExtractUtil.java index 190d5bae2d26..cb1e5961adac 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ExtractUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ExtractUtil.java @@ -329,9 +329,7 @@ public class ExtractUtil { buffer.append("\n}"); String methodText = buffer.toString(); - GrMethod method = factory.createMethodFromText(methodText); - LOG.assertTrue(method != null); - return method; + return factory.createMethodFromText(methodText, helper.getContext()); } public static void appendName(@NotNull final StringBuilder buffer, @NotNull final String name) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/extract/method/ExtractMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/extract/method/ExtractMethodTest.groovy index baa7026cb5e5..dc81ef202967 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/extract/method/ExtractMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/extract/method/ExtractMethodTest.groovy @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2014 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. @@ -250,4 +250,9 @@ private String '-'() { } ''') } + + void testClassVsDefaultGDKClass() { + myFixture.addClass('package javax.sound.midi; public class Sequence { }') + doTest() + } } \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/refactoring/extractMethod/classVsDefaultGDKClass.test b/plugins/groovy/testdata/groovy/refactoring/extractMethod/classVsDefaultGDKClass.test new file mode 100644 index 000000000000..5e18f45242a5 --- /dev/null +++ b/plugins/groovy/testdata/groovy/refactoring/extractMethod/classVsDefaultGDKClass.test @@ -0,0 +1,24 @@ +import javax.sound.midi.* + +class Player { + + public static void playMidiFromClasspath(String resourceName) { + Sequence sequence = MidiSystem.getSequence(Thread.currentThread().getContextClassLoader().getResourceAsStream(resourceName)) + println sequence + } +} +----- +import javax.sound.midi.* + +class Player { + + public static void playMidiFromClasspath(String resourceName) { + Sequence sequence = testMethod(resourceName) + println sequence + } + + private static Sequence testMethod(String resourceName) { + Sequence sequence = MidiSystem.getSequence(Thread.currentThread().getContextClassLoader().getResourceAsStream(resourceName)) + return sequence + } +} \ No newline at end of file