-
Bug
-
Resolution: Duplicate
-
P4
-
None
-
8u131
-
x86
FULL PRODUCT VERSION :
C:\Users\rudol>java -version
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+172)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+172, mixed mode)
However the netbeans run on
C:\_PGM\Java\JDK_JRE\JDK_8_64\bin>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 10.0.15063]
EXTRA RELEVANT SYSTEM CONFIGURATION :
Developed under NetBeans 8.2,
A DESCRIPTION OF THE PROBLEM :
I have run "Clean and Build" of the project Adv_17s_Testing that used the framework Adv_17s_FW.
Both projects are
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
When I have run the "Clean and Build" under NetBeans
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The files are compiled and the project built.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Compiling 26 source files to D:\SVN_PGM\@E_Vyuka\@@E_Adventura\Adv_17s\Adv_17s_Testing\build\classes
An exception has occurred in the compiler (1.8.0_131). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError
at com.sun.tools.javac.util.Assert.error(Assert.java:126)
at com.sun.tools.javac.util.Assert.check(Assert.java:45)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor$LambdaTranslationContext.addSymbol(LambdaToMethod.java:2024)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitNewClass(LambdaToMethod.java:1378)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.visitLambda(TreeTranslator.java:289)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeLambda(LambdaToMethod.java:1347)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeLambda(LambdaToMethod.java:1328)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitReference(LambdaToMethod.java:1450)
at com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:1973)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitApply(TreeTranslator.java:275)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitApply(LambdaToMethod.java:1208)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitBlock(LambdaToMethod.java:1231)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitMethodDef(LambdaToMethod.java:1361)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitClassDef(LambdaToMethod.java:1270)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeAndPreprocessClass(LambdaToMethod.java:1197)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.access$300(LambdaToMethod.java:1148)
at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:232)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:197)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:190)
at com.sun.tools.javac.comp.LambdaToMethod.translateTopLevelClass(LambdaToMethod.java:217)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1493)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at com.sun.tools.javac.Main.main(Main.java:42)
D:\SVN_PGM\@E_Vyuka\@@E_Adventura\Adv_17s\Adv_17s_Testing\nbproject\build-impl.xml:1100: The following error occurred while executing this line:
D:\SVN_PGM\@E_Vyuka\@@E_Adventura\Adv_17s\Adv_17s_Testing\nbproject\build-impl.xml:401: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 1 second)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
/* The file is saved in UTF-8 codepage.
* Check: «Stereotype», Section mark-§, Copyright-©, Alpha-α, Beta-β, Smile-☺
*/
package eu.pedu.adv17s.testers.t11_abrakadabra;
import eu.pedu.adv17s_fw.game_txt.IGSMFactory;
import eu.pedu.adv17s_fw.game_txt.IGame;
import eu.pedu.adv17s_fw.game_txt.IPlace;
import eu.pedu.adv17s_fw.scenario.AScenarioManager;
import eu.pedu.adv17s_fw.scenario.Scenario;
import eu.pedu.adv17s_fw.scenario.ScenarioStep;
import eu.pedu.adv17s_fw.scenario.TypeOfStep;
import eu.pedu.adv17s_fw.test_util.common.TestException;
import eu.pedu.adv17s_fw.test_util.game_txt_test.ScenarioSummary;
import eu.pedu.adv17s_fw.test_util.game_txt_test.ATestVisitor;
import eu.pedu.adv17s_fw.test_util.game_txt_test.ASolutionTester;
import eu.pedu.adv17s_fw.test_util.scenario_test.SMSummary;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/*******************************************************************************
* Instance třídy {@code T17s11_Tester} testují správné zapracování<br>
* modifikace s kódem <b>17s11</b>, požadující upravit odevzdaný program<br>
* následovně:<br>
* <br>
* Doplňte do hry příkaz nazvaný <b>_Abrakadabra_</b>
* s následujícími vlastnostmi:<br>
* <ul>
* <li>Při zadání příkazu ani jeho parametrů
* nebude záležet na velikosti písmen
* <br> </li>
* <li>Při zadání příkazu s parametrem <b>{@code _Zkratka_}</b> se hráč
* přesune do prostoru nazvaného <b>{@code <Zkratka>}</b>
* bez změny obsahu batohu.
* Tento prostor nebude mít ve výchozím stavu žádné sousedy.
* <br> </li>
* <li>Zadáte-li v prostoru <b>Zkratka</b> tento příkaz s parametrem
* <b>Cíl</b>, stane se cílový prostor úspěšného scénáře sousedem prostoru
* <b>Zkratka</b>. Navíc se upraví obsah batohu hráče spolu se sousedy
* a obsahem cílového prostoru tak, aby odpovídaly stavu
* v závěrečném kroku úspěšného scénáře.
* <br> </li>
* <li>Přejde-li v následujícím kroku hráč do cílového prostoru,
* odpoví hra stejně jako v závěrečném kroku úspěšného scénáře.
* Jinými slovy: závěrečný krok testovacího a úspěšného scénáře budou
* shodné s jediným rozdílem: závěrečným příkazem testovacího scénáře
* bude přechod co cílového prostoru.
* <br> </li>
* <li>Zadá-li hráč příkaz <b>AbrakaDabra</b> s jiným parametrem
* než s jedním ze dvou výše uvedených (včetně zadání bez parametrů),
* bude se hra chovat stejně, jako když uživatel zadá neznámý příkaz
* <br> </li>
* </ul>
* Doplňte do správce scénářů obecný testovací scénář, tj. scénář typu
* {@link TypeOfScenario#scGENERAL} nazvaný <b>_T17s11_</b>
* s následujícími testovacími kroky:
* <ol>
* <li>Startovacím krok úspěšného scénáře – krok typu
* {@link TypeOfStep#tsSTART}.
* <br> </li>
* <li>Zadání příkazu <b>AbrakaDabra</b> bez parametru – krok typu
* {@link TypeOfStep#tsUNKNOWN}.
* <br> </li>
* <li>Zadání příkazu <b>AbrakaDabra Zkratka</b> – krok typu
* {@link TypeOfStep#tsNON_STANDARD}.
* <br> </li>
* <li>Zadání příkazu <b>AbrakaDabra Cíl</b> – krok typu
* {@link TypeOfStep#tsNON_STANDARD}.
* <br> </li>
* <li>Přesun do cílového prostoru a ukončení hry – krok typu
* {@link TypeOfStep#tsMOVE}.
* <br> </li>
* </ol>
*
* @author Rudolf PECINOVSKÝ
* @version 2016-Summer
*/
public class T17s11_Tester_ORG
extends ASolutionTester
{
//== CONSTANT CLASS ATTRIBUTES =================================================
/** Seznam výsledků provedených testů. */
private static final List<ScenarioSummary> INFOS = new ArrayList<>();
/** Nově přidávaný příkaz. */
private static final String COMMAND = "Abrakadabra";
/** První používaný parametr. */
private static final String ARG_1 = "Zkratka";
/** Druhý používaný parametr. */
private static final String ARG_2 = "Cíl";
//== VARIABLE CLASS ATTRIBUTES =================================================
/** Proměnná obsahující souhrn informací získaných z analýzy scénářů. */
private static SMSummary summary;
/**Stručná verze zprávy o vytvoření testu. */
private static String createTestShortMessage;
/**Podrobná verze zprávy o vytvoření testu. */
private static String createTestVerbosetMessage;
//##############################################################################
//== STATIC INITIALIZER (CLASS CONSTRUCTOR) ====================================
//== CLASS GETTERS AND SETTERS =================================================
//== OTHER NON-PRIVATE CLASS METHODS ===========================================
// /***************************************************************************
// * Otestuje zadanou hru základním, chybovým a kontrolním scénářem
// * (kontrolní scénář si test vygeneruje sám).
// *
// * @param game Testovaná hra
// */
// public static void test(IGame game)
// {
// TextGameTestUtil test = TextGameTestUtil.getInstance(game);
// createTestShortMessage = test.getShortMessage();
// createTestVerbosetMessage = test.getVerboseMessage();
// summary = test.getSummary();
//// test.setVisitor(new Visitor_04());
// test.testGameByScenario(0);
// test.testGameByScenario(1);
// Scenario scenario = createTestScenario_04(game);
// test.testGameByScenario(scenario);
// printResults(game, summary);
// }
//== PRIVATE AND AUXILIARY CLASS METHODS =======================================
/***************************************************************************
* Definuje scénář, podle nějž je možno prověřit
* splnění požadavků dané obhajoby.
*
* @param game Testovaná hra
* @return Vytvořený scénář
*/
private static Scenario createTestScenario_04(IGame game)
{
ScenarioStep[] steps = prepareScenarioSteps(game);
Scenario result = null;
// new Scenario("_T04_",
// TypeOfScenario.scGENERAL,
// game.getScenarioManager(),
// steps);
return result;
}
/***************************************************************************
* Připraví kroky testovacího scénáře.
*
* @param game Testovaná hra
* @return Kroky testovacího scénáře
*/
private static ScenarioStep[] prepareScenarioSteps(IGame game)
{
// AScenarioManager manager = game.getScenarioManager();
// String notKnownAnswer = findNotKnownAnswerStep(manager);
// String moveCommand = game.getBasicCommands().MOVE_CMD_NAME;
//
// ScenarioStep startStep = summary.startStep;
// ScenarioStep endStep = summary.endStep;
//
//// startStep.setNewIndex(1);
//
ScenarioStep[] result = new ScenarioStep[]
{};
// {
// //Startovací
// startStep,
//
// //Příkaz bez parametrů
// new ScenarioStep(TypeOfStep.tsUNKNOWN,
// COMMAND,
// notKnownAnswer,
// startStep.space,
// startStep.neighbors,
// startStep.items,
// startStep.bag
// ),
//
// //Magický přesun do prostoru Zkratka
// new ScenarioStep(TypeOfStep.tsNON_STANDARD,
// COMMAND + " " + ARG_1,
// ScenarioStep.IGNORED_MESSAGE,
// ARG_1,
// new String[] {},
// new String[] {},
// startStep.bag
// ),
//
// //Příprava parametrů pro finiš
// new ScenarioStep(TypeOfStep.tsNON_STANDARD,
// COMMAND + " " + ARG_2,
// ScenarioStep.IGNORED_MESSAGE,
// ARG_1,
// new String[] {endStep.item},
// new String[] {},
// endStep.bag
// ),
//
// //Závěrečný krok ukončující daný běh hry
// new ScenarioStep(TypeOfStep.tsMOVE,
// moveCommand + " " + endStep.item,
// endStep.message,
// endStep.item,
// endStep.neighbors,
// endStep.items,
// endStep.bag)
// };
return result;
}
/***************************************************************************
* Zjistí text zprávy vracené při zadání neznámého příkazu.
*
* @param manager Správce scénářů dané hry
* @return Text požadované zprávy
*/
private static String findNotKnownAnswerStep(AScenarioManager manager)
{
String answer = null;
Scenario scenario = manager.getMistakeScenario();
for (ScenarioStep step : scenario) {
if (step.typeOfStep == TypeOfStep.tsUNKNOWN) {
answer = step.message;
break;
}
}
if (answer == null) {
throw new TestException(
"\nChybový scénář neobsahuje krok prověřující reakci " +
"na neexistující příkaz");
}
return answer;
}
//##############################################################################
//== CONSTANT INSTANCE ATTRIBUTES ==============================================
//== VARIABLE INSTANCE ATTRIBUTES ==============================================
//##############################################################################
//== CONSTRUCTORS AND FACTORY METHODS ==========================================
/***************************************************************************
* Vytvoří tester prověřující řešení zadání specifikovaného v konstantě
* {@link #DESCRIPTION}.
*/
public T17s11_Tester_ORG()
{
super("17s11", "", Visitor::new);
}
//== ABSTRACT METHODS ==========================================================
//== INSTANCE GETTERS AND SETTERS ==============================================
//== OTHER NON-PRIVATE INSTANCE METHODS ========================================
//== PRIVATE AND AUXILIARY INSTANCE METHODS ====================================
// /***************************************************************************
// * Vytiskne souhrnné výsledky provedených testů.
// *
// * @param game Testovaná hra
// * @param summary Přepravka se souhrnem informací o výsledcích testů
// * jednotlivých scénářů spravovaných správcem scénářů
// */
// private static void printResults(IGame game, SMSummary summary)
// {
// StringBuilder sb = new StringBuilder(
// "\n\nVýsledky provedených testů projektu uživatele ");
// sb.append(game.getAuthorID()) .append(" — ").
// append(game.getAuthorName()).append("\n");
// for (int i = 0; i < summary.results.length; i++) {
// boolean result = summary.results[i];
// String name = summary.scenarios.get(i).getName();
// sb.append(name).append(" — ").
// append(result?"":"NE").append("PROŠEL").
// append('\n');
// }
// for (_GameTestInfo info : INFOS) {
// sb.append("Scénář: ").append(info.scenario.getName()).
//// append('\n').
//// append(" Shrnutí: ").
// append(info.shortMessage);
// }
// String output = sb.toString();
// System.out.println(output);
// }
//##############################################################################
//== NESTED DATA TYPES =========================================================
/***************************************************************************
* Instance třídy {@code Visitor} představují návštěvníky prověřující
* splnění zadání definované ve veřejné konstantě {@link #DESCRIPTION}.
*/
private class Visitor
extends ATestVisitor
{
//== CONSTANT CLASS ATTRIBUTES =============================================
//== VARIABLE CLASS ATTRIBUTES =============================================
//== STATIC CONSTRUCTOR (CLASS INITIALIZER, STATIC INICITALIZING BLOCK) ====
//== CLASS GETTERS AND SETTERS =============================================
//== OTHER NON-PRIVATE CLASS METHODS =======================================
//##########################################################################
//== CONSTANT INSTANCE ATTRIBUTES ==========================================
// /** Množina doposud nezadaných příkazů dané hry. */
// public Set<String> notEntered = new HashSet<>();
//== VARIABLE INSTANCE ATTRIBUTES ==========================================
//##########################################################################
//== CONSTUCTORS AND FACTORY METHODS =======================================
/***********************************************************************
* Vytvoří návštěvníka metod testujících fungování hry podle
* modifikovaného zadání definovaného v konstantě {@link #DESCRIPTION}.
*
* @param myTest Zadavatel požadující vyřešení zadání
* definovaného v konstantě {@link #DESCRIPTION}
* @param factory Tovární objekt poskytující základní objekty
* prověřované aplikace
*/
Visitor(ASolutionTester myTest, IGSMFactory factory)
{
super(myTest, factory);
}
//== ABSTRACT METHODS ======================================================
//== INSTANCE GETTERS AND SETTERS ==========================================
/***************************************************************************
* Vrátí sdružený tester, jehož zadání prověřuje.
*
* @return Sdružený tester
*/
@Override
public ASolutionTester getTester()
{
return T17s11_Tester_ORG.this;
}
//== OTHER NON-PRIVATE INSTANCE METHODS ====================================
/***********************************************************************
* Akce, která se má provést po spuštění hry před testem prvního kroku:
*
* @param scenario Scénář definující proces testování
*/
@Override
public void afterGameStart(Scenario scenario)
{
// super.beforeStart(game, scenario);
// //TODO Vyrobit speciální test povinných metod
// game.getBasicCommands();
// notEntered.clear();
// Collection<? extends ICommand> allCommands = game.getAllCommands();
// for (ICommand iCommand : allCommands) {
// String name = iCommand.getName().toLowerCase();
// notEntered.add(name);
// }
}
/***********************************************************************
* Akce, která se má provést po testu aktuálního kroku:
*
* @param step Aktuálně testovaný krok scénáře
* @param message Zpráva vrácená hrou v daném kroku
*/
@Override
public void afterStepTest(ScenarioStep step, String message)
{
// String wholeCommand = step.command;
// String[] words = wholeCommand.trim().split("\\s+");
// String commandName = words[0];
// notEntered.remove(commandName.toLowerCase());
//
// String[] parts = message.split("§");
// int number = parts.length;
// if (number < 2) {
// throw new TestException(
// "\nChybí požadovaný závěrečný řádek");
// }
// if (number > 2) {
// throw new TestException(
// "\nNečekaný znak § v závěrečné zprávě");
// }
// String line = parts[1];
// if (! line.startsWith(START)) {
// throw new TestException(
// "\nZávěrečný řádek nemá požadovaný začátek");
// }
// line = line.trim();
// if (! line.endsWith(END)) {
// throw new TestException(
// "\nZávěrečný řádek nemá požadovaný konec");
// }
// if (step.typeOfStep == TypeOfStep.tsNOT_START) {
// return;
// }
// String answer = line.substring(START.length(),
// line.length() - END.length()).trim();
// String[] nameArr;
// if (answer.isEmpty()) {
// nameArr = new String[0];
// }
// else {
// nameArr = answer.split(SEPARATOR);
// }
// Set<String> names = new HashSet<>(Arrays.asList(nameArr));
//
// if (notEntered.size() != names.size()) {
// throw new TestException(
// "\nNesouhlasí počet uvedených nezadaných příkazů");
// }
// for (Iterator<String> it = names.iterator(); it.hasNext();) {
// String name = it.next();
// String tested = name.toLowerCase();
// if (notEntered.contains(tested)) {
// it.remove();
// }
// else {
// throw new TestException(
// "\nChybně uvedený nezadaný příkaz: " + name);
// }
// }
}
/***********************************************************************
* Akce, která se má provést po testu posledního kroku.
*
* @param summary Přepravka s kompletními informacemi o průběhu hry
*/
@Override
public void afterGameEnd(Throwable exception, String verboseMessage)
{
super.afterGameEnd(exception, verboseMessage);
}
//== PRIVATE AND AUXILIARY INSTANCE METHODS ================================
//##########################################################################
//== EMBEDDED TYPES AND INNER CLASSES ======================================
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
I prepared another version of this class.
C:\Users\rudol>java -version
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+172)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+172, mixed mode)
However the netbeans run on
C:\_PGM\Java\JDK_JRE\JDK_8_64\bin>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 10.0.15063]
EXTRA RELEVANT SYSTEM CONFIGURATION :
Developed under NetBeans 8.2,
A DESCRIPTION OF THE PROBLEM :
I have run "Clean and Build" of the project Adv_17s_Testing that used the framework Adv_17s_FW.
Both projects are
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
When I have run the "Clean and Build" under NetBeans
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The files are compiled and the project built.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Compiling 26 source files to D:\SVN_PGM\@E_Vyuka\@@E_Adventura\Adv_17s\Adv_17s_Testing\build\classes
An exception has occurred in the compiler (1.8.0_131). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError
at com.sun.tools.javac.util.Assert.error(Assert.java:126)
at com.sun.tools.javac.util.Assert.check(Assert.java:45)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor$LambdaTranslationContext.addSymbol(LambdaToMethod.java:2024)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitNewClass(LambdaToMethod.java:1378)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.visitLambda(TreeTranslator.java:289)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeLambda(LambdaToMethod.java:1347)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeLambda(LambdaToMethod.java:1328)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitReference(LambdaToMethod.java:1450)
at com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:1973)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitApply(TreeTranslator.java:275)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitApply(LambdaToMethod.java:1208)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitBlock(LambdaToMethod.java:1231)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitMethodDef(LambdaToMethod.java:1361)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitClassDef(LambdaToMethod.java:1270)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeAndPreprocessClass(LambdaToMethod.java:1197)
at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.access$300(LambdaToMethod.java:1148)
at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:232)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:197)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:190)
at com.sun.tools.javac.comp.LambdaToMethod.translateTopLevelClass(LambdaToMethod.java:217)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1493)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at com.sun.tools.javac.Main.main(Main.java:42)
D:\SVN_PGM\@E_Vyuka\@@E_Adventura\Adv_17s\Adv_17s_Testing\nbproject\build-impl.xml:1100: The following error occurred while executing this line:
D:\SVN_PGM\@E_Vyuka\@@E_Adventura\Adv_17s\Adv_17s_Testing\nbproject\build-impl.xml:401: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 1 second)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
/* The file is saved in UTF-8 codepage.
* Check: «Stereotype», Section mark-§, Copyright-©, Alpha-α, Beta-β, Smile-☺
*/
package eu.pedu.adv17s.testers.t11_abrakadabra;
import eu.pedu.adv17s_fw.game_txt.IGSMFactory;
import eu.pedu.adv17s_fw.game_txt.IGame;
import eu.pedu.adv17s_fw.game_txt.IPlace;
import eu.pedu.adv17s_fw.scenario.AScenarioManager;
import eu.pedu.adv17s_fw.scenario.Scenario;
import eu.pedu.adv17s_fw.scenario.ScenarioStep;
import eu.pedu.adv17s_fw.scenario.TypeOfStep;
import eu.pedu.adv17s_fw.test_util.common.TestException;
import eu.pedu.adv17s_fw.test_util.game_txt_test.ScenarioSummary;
import eu.pedu.adv17s_fw.test_util.game_txt_test.ATestVisitor;
import eu.pedu.adv17s_fw.test_util.game_txt_test.ASolutionTester;
import eu.pedu.adv17s_fw.test_util.scenario_test.SMSummary;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/*******************************************************************************
* Instance třídy {@code T17s11_Tester} testují správné zapracování<br>
* modifikace s kódem <b>17s11</b>, požadující upravit odevzdaný program<br>
* následovně:<br>
* <br>
* Doplňte do hry příkaz nazvaný <b>_Abrakadabra_</b>
* s následujícími vlastnostmi:<br>
* <ul>
* <li>Při zadání příkazu ani jeho parametrů
* nebude záležet na velikosti písmen
* <br> </li>
* <li>Při zadání příkazu s parametrem <b>{@code _Zkratka_}</b> se hráč
* přesune do prostoru nazvaného <b>{@code <Zkratka>}</b>
* bez změny obsahu batohu.
* Tento prostor nebude mít ve výchozím stavu žádné sousedy.
* <br> </li>
* <li>Zadáte-li v prostoru <b>Zkratka</b> tento příkaz s parametrem
* <b>Cíl</b>, stane se cílový prostor úspěšného scénáře sousedem prostoru
* <b>Zkratka</b>. Navíc se upraví obsah batohu hráče spolu se sousedy
* a obsahem cílového prostoru tak, aby odpovídaly stavu
* v závěrečném kroku úspěšného scénáře.
* <br> </li>
* <li>Přejde-li v následujícím kroku hráč do cílového prostoru,
* odpoví hra stejně jako v závěrečném kroku úspěšného scénáře.
* Jinými slovy: závěrečný krok testovacího a úspěšného scénáře budou
* shodné s jediným rozdílem: závěrečným příkazem testovacího scénáře
* bude přechod co cílového prostoru.
* <br> </li>
* <li>Zadá-li hráč příkaz <b>AbrakaDabra</b> s jiným parametrem
* než s jedním ze dvou výše uvedených (včetně zadání bez parametrů),
* bude se hra chovat stejně, jako když uživatel zadá neznámý příkaz
* <br> </li>
* </ul>
* Doplňte do správce scénářů obecný testovací scénář, tj. scénář typu
* {@link TypeOfScenario#scGENERAL} nazvaný <b>_T17s11_</b>
* s následujícími testovacími kroky:
* <ol>
* <li>Startovacím krok úspěšného scénáře – krok typu
* {@link TypeOfStep#tsSTART}.
* <br> </li>
* <li>Zadání příkazu <b>AbrakaDabra</b> bez parametru – krok typu
* {@link TypeOfStep#tsUNKNOWN}.
* <br> </li>
* <li>Zadání příkazu <b>AbrakaDabra Zkratka</b> – krok typu
* {@link TypeOfStep#tsNON_STANDARD}.
* <br> </li>
* <li>Zadání příkazu <b>AbrakaDabra Cíl</b> – krok typu
* {@link TypeOfStep#tsNON_STANDARD}.
* <br> </li>
* <li>Přesun do cílového prostoru a ukončení hry – krok typu
* {@link TypeOfStep#tsMOVE}.
* <br> </li>
* </ol>
*
* @author Rudolf PECINOVSKÝ
* @version 2016-Summer
*/
public class T17s11_Tester_ORG
extends ASolutionTester
{
//== CONSTANT CLASS ATTRIBUTES =================================================
/** Seznam výsledků provedených testů. */
private static final List<ScenarioSummary> INFOS = new ArrayList<>();
/** Nově přidávaný příkaz. */
private static final String COMMAND = "Abrakadabra";
/** První používaný parametr. */
private static final String ARG_1 = "Zkratka";
/** Druhý používaný parametr. */
private static final String ARG_2 = "Cíl";
//== VARIABLE CLASS ATTRIBUTES =================================================
/** Proměnná obsahující souhrn informací získaných z analýzy scénářů. */
private static SMSummary summary;
/**Stručná verze zprávy o vytvoření testu. */
private static String createTestShortMessage;
/**Podrobná verze zprávy o vytvoření testu. */
private static String createTestVerbosetMessage;
//##############################################################################
//== STATIC INITIALIZER (CLASS CONSTRUCTOR) ====================================
//== CLASS GETTERS AND SETTERS =================================================
//== OTHER NON-PRIVATE CLASS METHODS ===========================================
// /***************************************************************************
// * Otestuje zadanou hru základním, chybovým a kontrolním scénářem
// * (kontrolní scénář si test vygeneruje sám).
// *
// * @param game Testovaná hra
// */
// public static void test(IGame game)
// {
// TextGameTestUtil test = TextGameTestUtil.getInstance(game);
// createTestShortMessage = test.getShortMessage();
// createTestVerbosetMessage = test.getVerboseMessage();
// summary = test.getSummary();
//// test.setVisitor(new Visitor_04());
// test.testGameByScenario(0);
// test.testGameByScenario(1);
// Scenario scenario = createTestScenario_04(game);
// test.testGameByScenario(scenario);
// printResults(game, summary);
// }
//== PRIVATE AND AUXILIARY CLASS METHODS =======================================
/***************************************************************************
* Definuje scénář, podle nějž je možno prověřit
* splnění požadavků dané obhajoby.
*
* @param game Testovaná hra
* @return Vytvořený scénář
*/
private static Scenario createTestScenario_04(IGame game)
{
ScenarioStep[] steps = prepareScenarioSteps(game);
Scenario result = null;
// new Scenario("_T04_",
// TypeOfScenario.scGENERAL,
// game.getScenarioManager(),
// steps);
return result;
}
/***************************************************************************
* Připraví kroky testovacího scénáře.
*
* @param game Testovaná hra
* @return Kroky testovacího scénáře
*/
private static ScenarioStep[] prepareScenarioSteps(IGame game)
{
// AScenarioManager manager = game.getScenarioManager();
// String notKnownAnswer = findNotKnownAnswerStep(manager);
// String moveCommand = game.getBasicCommands().MOVE_CMD_NAME;
//
// ScenarioStep startStep = summary.startStep;
// ScenarioStep endStep = summary.endStep;
//
//// startStep.setNewIndex(1);
//
ScenarioStep[] result = new ScenarioStep[]
{};
// {
// //Startovací
// startStep,
//
// //Příkaz bez parametrů
// new ScenarioStep(TypeOfStep.tsUNKNOWN,
// COMMAND,
// notKnownAnswer,
// startStep.space,
// startStep.neighbors,
// startStep.items,
// startStep.bag
// ),
//
// //Magický přesun do prostoru Zkratka
// new ScenarioStep(TypeOfStep.tsNON_STANDARD,
// COMMAND + " " + ARG_1,
// ScenarioStep.IGNORED_MESSAGE,
// ARG_1,
// new String[] {},
// new String[] {},
// startStep.bag
// ),
//
// //Příprava parametrů pro finiš
// new ScenarioStep(TypeOfStep.tsNON_STANDARD,
// COMMAND + " " + ARG_2,
// ScenarioStep.IGNORED_MESSAGE,
// ARG_1,
// new String[] {endStep.item},
// new String[] {},
// endStep.bag
// ),
//
// //Závěrečný krok ukončující daný běh hry
// new ScenarioStep(TypeOfStep.tsMOVE,
// moveCommand + " " + endStep.item,
// endStep.message,
// endStep.item,
// endStep.neighbors,
// endStep.items,
// endStep.bag)
// };
return result;
}
/***************************************************************************
* Zjistí text zprávy vracené při zadání neznámého příkazu.
*
* @param manager Správce scénářů dané hry
* @return Text požadované zprávy
*/
private static String findNotKnownAnswerStep(AScenarioManager manager)
{
String answer = null;
Scenario scenario = manager.getMistakeScenario();
for (ScenarioStep step : scenario) {
if (step.typeOfStep == TypeOfStep.tsUNKNOWN) {
answer = step.message;
break;
}
}
if (answer == null) {
throw new TestException(
"\nChybový scénář neobsahuje krok prověřující reakci " +
"na neexistující příkaz");
}
return answer;
}
//##############################################################################
//== CONSTANT INSTANCE ATTRIBUTES ==============================================
//== VARIABLE INSTANCE ATTRIBUTES ==============================================
//##############################################################################
//== CONSTRUCTORS AND FACTORY METHODS ==========================================
/***************************************************************************
* Vytvoří tester prověřující řešení zadání specifikovaného v konstantě
* {@link #DESCRIPTION}.
*/
public T17s11_Tester_ORG()
{
super("17s11", "", Visitor::new);
}
//== ABSTRACT METHODS ==========================================================
//== INSTANCE GETTERS AND SETTERS ==============================================
//== OTHER NON-PRIVATE INSTANCE METHODS ========================================
//== PRIVATE AND AUXILIARY INSTANCE METHODS ====================================
// /***************************************************************************
// * Vytiskne souhrnné výsledky provedených testů.
// *
// * @param game Testovaná hra
// * @param summary Přepravka se souhrnem informací o výsledcích testů
// * jednotlivých scénářů spravovaných správcem scénářů
// */
// private static void printResults(IGame game, SMSummary summary)
// {
// StringBuilder sb = new StringBuilder(
// "\n\nVýsledky provedených testů projektu uživatele ");
// sb.append(game.getAuthorID()) .append(" — ").
// append(game.getAuthorName()).append("\n");
// for (int i = 0; i < summary.results.length; i++) {
// boolean result = summary.results[i];
// String name = summary.scenarios.get(i).getName();
// sb.append(name).append(" — ").
// append(result?"":"NE").append("PROŠEL").
// append('\n');
// }
// for (_GameTestInfo info : INFOS) {
// sb.append("Scénář: ").append(info.scenario.getName()).
//// append('\n').
//// append(" Shrnutí: ").
// append(info.shortMessage);
// }
// String output = sb.toString();
// System.out.println(output);
// }
//##############################################################################
//== NESTED DATA TYPES =========================================================
/***************************************************************************
* Instance třídy {@code Visitor} představují návštěvníky prověřující
* splnění zadání definované ve veřejné konstantě {@link #DESCRIPTION}.
*/
private class Visitor
extends ATestVisitor
{
//== CONSTANT CLASS ATTRIBUTES =============================================
//== VARIABLE CLASS ATTRIBUTES =============================================
//== STATIC CONSTRUCTOR (CLASS INITIALIZER, STATIC INICITALIZING BLOCK) ====
//== CLASS GETTERS AND SETTERS =============================================
//== OTHER NON-PRIVATE CLASS METHODS =======================================
//##########################################################################
//== CONSTANT INSTANCE ATTRIBUTES ==========================================
// /** Množina doposud nezadaných příkazů dané hry. */
// public Set<String> notEntered = new HashSet<>();
//== VARIABLE INSTANCE ATTRIBUTES ==========================================
//##########################################################################
//== CONSTUCTORS AND FACTORY METHODS =======================================
/***********************************************************************
* Vytvoří návštěvníka metod testujících fungování hry podle
* modifikovaného zadání definovaného v konstantě {@link #DESCRIPTION}.
*
* @param myTest Zadavatel požadující vyřešení zadání
* definovaného v konstantě {@link #DESCRIPTION}
* @param factory Tovární objekt poskytující základní objekty
* prověřované aplikace
*/
Visitor(ASolutionTester myTest, IGSMFactory factory)
{
super(myTest, factory);
}
//== ABSTRACT METHODS ======================================================
//== INSTANCE GETTERS AND SETTERS ==========================================
/***************************************************************************
* Vrátí sdružený tester, jehož zadání prověřuje.
*
* @return Sdružený tester
*/
@Override
public ASolutionTester getTester()
{
return T17s11_Tester_ORG.this;
}
//== OTHER NON-PRIVATE INSTANCE METHODS ====================================
/***********************************************************************
* Akce, která se má provést po spuštění hry před testem prvního kroku:
*
* @param scenario Scénář definující proces testování
*/
@Override
public void afterGameStart(Scenario scenario)
{
// super.beforeStart(game, scenario);
// //TODO Vyrobit speciální test povinných metod
// game.getBasicCommands();
// notEntered.clear();
// Collection<? extends ICommand> allCommands = game.getAllCommands();
// for (ICommand iCommand : allCommands) {
// String name = iCommand.getName().toLowerCase();
// notEntered.add(name);
// }
}
/***********************************************************************
* Akce, která se má provést po testu aktuálního kroku:
*
* @param step Aktuálně testovaný krok scénáře
* @param message Zpráva vrácená hrou v daném kroku
*/
@Override
public void afterStepTest(ScenarioStep step, String message)
{
// String wholeCommand = step.command;
// String[] words = wholeCommand.trim().split("\\s+");
// String commandName = words[0];
// notEntered.remove(commandName.toLowerCase());
//
// String[] parts = message.split("§");
// int number = parts.length;
// if (number < 2) {
// throw new TestException(
// "\nChybí požadovaný závěrečný řádek");
// }
// if (number > 2) {
// throw new TestException(
// "\nNečekaný znak § v závěrečné zprávě");
// }
// String line = parts[1];
// if (! line.startsWith(START)) {
// throw new TestException(
// "\nZávěrečný řádek nemá požadovaný začátek");
// }
// line = line.trim();
// if (! line.endsWith(END)) {
// throw new TestException(
// "\nZávěrečný řádek nemá požadovaný konec");
// }
// if (step.typeOfStep == TypeOfStep.tsNOT_START) {
// return;
// }
// String answer = line.substring(START.length(),
// line.length() - END.length()).trim();
// String[] nameArr;
// if (answer.isEmpty()) {
// nameArr = new String[0];
// }
// else {
// nameArr = answer.split(SEPARATOR);
// }
// Set<String> names = new HashSet<>(Arrays.asList(nameArr));
//
// if (notEntered.size() != names.size()) {
// throw new TestException(
// "\nNesouhlasí počet uvedených nezadaných příkazů");
// }
// for (Iterator<String> it = names.iterator(); it.hasNext();) {
// String name = it.next();
// String tested = name.toLowerCase();
// if (notEntered.contains(tested)) {
// it.remove();
// }
// else {
// throw new TestException(
// "\nChybně uvedený nezadaný příkaz: " + name);
// }
// }
}
/***********************************************************************
* Akce, která se má provést po testu posledního kroku.
*
* @param summary Přepravka s kompletními informacemi o průběhu hry
*/
@Override
public void afterGameEnd(Throwable exception, String verboseMessage)
{
super.afterGameEnd(exception, verboseMessage);
}
//== PRIVATE AND AUXILIARY INSTANCE METHODS ================================
//##########################################################################
//== EMBEDDED TYPES AND INNER CLASSES ======================================
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
I prepared another version of this class.
- duplicates
-
JDK-8173456 com.sun.tools.javac.util.Assert.error during code compilation
-
- Closed
-