jjazzboss opened a new issue, #8594:
URL: https://github.com/apache/netbeans/issues/8594
### Apache NetBeans version
Apache NetBeans 26
### What happened
Was coding a java file.
Typing a call to a new unknown method.
Hint appears to propose to create the method locally, OK => exception below
(method is not created)
java.lang.AssertionError: unexpected type: none
at com.sun.tools.javac.tree.TreeMaker.Type(TreeMaker.java:888)
at
org.netbeans.modules.java.source.builder.TreeFactory.Type(TreeFactory.java:895)
at org.netbeans.api.java.source.TreeMaker.Type(TreeMaker.java:1244)
at
org.netbeans.modules.java.hints.errors.CreateMethodFix$1.run(CreateMethodFix.java:243)
at
org.netbeans.modules.java.hints.errors.CreateMethodFix$1.run(CreateMethodFix.java:166)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:671)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:661)
at
org.netbeans.api.java.source.JavaSource$MultiTask.run(JavaSource.java:504)
at
org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:586)
at
org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:197)
at
org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:180)
at
org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:181)
at
org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:178)
at
org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
at
org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
at
org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
at
org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
at
org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:178)
at
org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:83)
at
org.netbeans.api.java.source.JavaSource.runUserActionTaskImpl(JavaSource.java:454)
at
org.netbeans.api.java.source.JavaSource.runUserActionTask(JavaSource.java:425)
at
org.netbeans.api.java.source.JavaSource.runModificationTask(JavaSource.java:680)
at
org.netbeans.modules.java.hints.errors.CreateMethodFix.getModificationResult(CreateMethodFix.java:166)
at
org.netbeans.modules.java.hints.errors.CreateMethodFix.implement(CreateMethodFix.java:154)
at org.netbeans.modules.editor.hints.HintsUI$1.run(HintsUI.java:810)
at
org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1403)
at
org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:287)
[catch] at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2018)
### Language / Project Type / NetBeans Component
Netbeans RCP platform app
### How to reproduce
See call to `getAllSizeWbpsas(store, bar);`, select hint to create method.
/*
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright @2019 Jerome Lelasseux. All rights reserved.
*
* This file is part of the JJazzLab software.
*
* JJazzLab is free software: you can redistribute it and/or modify
* it under the terms of the Lesser GNU General Public License
(LGPLv3)
* as published by the Free Software Foundation, either version 3 of
the License,
* or (at your option) any later version.
*
* JJazzLab is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
License
* along with JJazzLab. If not, see <https://www.gnu.org/licenses/>
*
* Contributor(s):
*
*/
package org.jjazz.jjswing.walkingbass;
import com.google.common.base.Preconditions;
import java.util.List;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Tile in bar order the most compatible WbpSourceAdaptation whose
WbpSource was never used or was used the furthest from current bar.
* <p>
*/
public class TilerMaxDistance implements Tiler
{
private final Predicate<Score> minScoreTester;
private static final Logger LOGGER =
Logger.getLogger(TilerMaxDistance.class.getSimpleName());
/**
*
* @param minScoreTester Ignore WbpSourceAdapatations which do not
satisfy this predicate
*/
public TilerMaxDistance(Predicate<Score> minScoreTester)
{
this.minScoreTester = minScoreTester;
}
@Override
public void tile(WbpTiling tiling, WbpsaStore store)
{
LOGGER.log(Level.FINE, "tile() --");
// LOGGER.log(Level.FINE, "tile() store=\n{0}",
store.toDebugString(true));
var nonTiledBars = tiling.getNonTiledBars();
var itBar = nonTiledBars.iterator();
while (itBar.hasNext())
{
int bar = itBar.next();
var wbpsas = getAllSizeWbpsas(store, bar); //
EXCEPTION here when selecting hint to create method
if (wbpsas.isEmpty())
{
continue;
}
var wbpsa = select(tiling, wbpsas);
if (wbpsa != null)
{
tiling.add(wbpsa);
// Advance
int wbpsaSize = wbpsa.getBarRange().size();
while (wbpsaSize-- > 1)
{
itBar.next();
}
}
}
}
//
====================================================================================================================
// Private methods
//
====================================================================================================================
/**
* Select the first WbpSourceAdaptation in wbpsas whose WbpSource
was never used, or was used at the furthest bar.
*
* @param tiling
* @param wbpsas Can not be empty. All WbpSourceAdaptation must
start at the same bar.
* @return Can be null
*/
private WbpSourceAdaptation select(WbpTiling tiling,
List<WbpSourceAdaptation> wbpsas)
{
Preconditions.checkArgument(!wbpsas.isEmpty());
WbpSourceAdaptation res = null;
int maxMinDistance = -1;
int wbpsaBar = wbpsas.get(0).getBarRange().from;
for (var wbpsa : wbpsas)
{
var usageBars =
tiling.getStartBarIndexes(wbpsa.getWbpSource(), true); // Use false for less
possible redundancies
if (usageBars.isEmpty())
{
res = wbpsa; // not used before, use it now
break;
}
// Used, find the largest min distance
int minDistance = usageBars.stream()
.mapToInt(bar -> Math.abs(bar - wbpsaBar))
.min()
.orElseThrow();
if (minDistance > maxMinDistance)
{
maxMinDistance = minDistance;
res = wbpsa;
} else if (minDistance == maxMinDistance)
{
// Randomly select to avoid repetitions
var oldRes = res;
res = Math.random() > 0.5 ? oldRes : wbpsa;
} else
{
assert res != null;
}
}
return res;
}
}
### Did this work correctly in an earlier version?
No / Don't know
### Operating System
Win 11
### JDK
Adoption JDK 23
### Apache NetBeans packaging
Apache NetBeans binary zip
### Anything else
_No response_
### Are you willing to submit a pull request?
No
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists