Improve to SC generation
This commit is contained in:
parent
2e1e69df9a
commit
26ae463e96
@ -10,6 +10,8 @@ import java.nio.file.Files;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.antlr.v4.runtime.Token;
|
import org.antlr.v4.runtime.Token;
|
||||||
@ -101,6 +103,10 @@ public class JavaTXCompilerWildcards
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<ResultSet> typeInference = typeInference();
|
List<ResultSet> typeInference = typeInference();
|
||||||
|
|
||||||
|
if (typeInference.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
ResultSet resultSet = typeInference.get(0); // Use the first available result sets
|
ResultSet resultSet = typeInference.get(0); // Use the first available result sets
|
||||||
|
|
||||||
for (Map.Entry<File, SourceFile> e : sourceFiles.entrySet()) {
|
for (Map.Entry<File, SourceFile> e : sourceFiles.entrySet()) {
|
||||||
@ -155,6 +161,37 @@ public class JavaTXCompilerWildcards
|
|||||||
int length = token.getStopIndex() - token.getStartIndex() + 1;
|
int length = token.getStopIndex() - token.getStartIndex() + 1;
|
||||||
reader.read(new char[length]);
|
reader.read(new char[length]);
|
||||||
readIdx += length;
|
readIdx += length;
|
||||||
|
|
||||||
|
// Read the replaced nested type if the result was a nested type
|
||||||
|
Pattern pattern = Pattern.compile("<.*>");
|
||||||
|
Matcher matcher = pattern.matcher(string);
|
||||||
|
if (matcher.find()) {
|
||||||
|
|
||||||
|
// Read the first and check if it will be a Java Generic Expression starting
|
||||||
|
// with <
|
||||||
|
char c = (char) reader.read();
|
||||||
|
readIdx++;
|
||||||
|
|
||||||
|
if (c != '<')
|
||||||
|
throw new IllegalStateException("At this position is a < expected, found " + c);
|
||||||
|
|
||||||
|
// Read and forget all content until a > on the same level
|
||||||
|
int opens = 1;
|
||||||
|
while (opens > 0) {
|
||||||
|
c = (char) reader.read();
|
||||||
|
readIdx++;
|
||||||
|
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case '<':
|
||||||
|
opens++;
|
||||||
|
break;
|
||||||
|
case '>':
|
||||||
|
opens--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the rest of the file.
|
// Read the rest of the file.
|
||||||
|
Loading…
Reference in New Issue
Block a user