A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pmd/pmd/issues/207 below:

[java] Parse error on method reference with generics · Issue #207 · pmd/pmd · GitHub

Hello guys,

I found an issue when analyzing open-source project 'spring' (https://github.com/spring-projects/spring-framework). Can you please take a look?

PMD version:
5.5.2

Rule Set:
java-basic

Description:

Error while processing file: spring-framework\spring-web-reactive\src\main\java\org\springframework\web\reactive\function\BodyExtractors.java
net.sourceforge.pmd.lang.java.ast.ParseException: Encountered " "::" ":: "" at line 121, column 52.
Was expecting one of:
    ")" ...
    "," ...
    "++" ...
    "--" ...

        at net.sourceforge.pmd.lang.java.ast.JavaParser.generateParseException(JavaParser.java:10875)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.jj_consume_token(JavaParser.java:10759)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.Arguments(JavaParser.java:4187)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.PrimarySuffix(JavaParser.java:4016)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.PrimaryExpression(JavaParser.java:3668)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.PostfixExpression(JavaParser.java:3502)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.UnaryExpressionNotPlusMinus(JavaParser.java:3464)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.UnaryExpression(JavaParser.java:3316)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.MultiplicativeExpression(JavaParser.java:3231)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.AdditiveExpression(JavaParser.java:3178)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ShiftExpression(JavaParser.java:3123)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.RelationalExpression(JavaParser.java:3062)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.InstanceOfExpression(JavaParser.java:3026)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.EqualityExpression(JavaParser.java:2973)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.AndExpression(JavaParser.java:2933)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ExclusiveOrExpression(JavaParser.java:2893)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.InclusiveOrExpression(JavaParser.java:2853)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ConditionalAndExpression(JavaParser.java:2813)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ConditionalOrExpression(JavaParser.java:2773)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ConditionalExpression(JavaParser.java:2734)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.Expression(JavaParser.java:2593)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ReturnStatement(JavaParser.java:5396)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.Statement(JavaParser.java:4488)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.BlockStatement(JavaParser.java:4617)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.Block(JavaParser.java:4575)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.MethodDeclaration(JavaParser.java:1554)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBodyDeclaration(JavaParser.java:1246)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBody(JavaParser.java:1162)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceDeclaration(JavaParser.java:586)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.TypeDeclaration(JavaParser.java:476)
        at net.sourceforge.pmd.lang.java.ast.JavaParser.CompilationUnit(JavaParser.java:222)
        at net.sourceforge.pmd.lang.java.AbstractJavaParser.parse(AbstractJavaParser.java:56)
        at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:95)
        at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:142)
        at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:80)
        at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:47)
        at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:79)
        at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:25)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

Code Sample demonstrating the issue:

	private static <T, S extends Publisher<T>> S readWithMessageReaders(
			ReactiveHttpInputMessage inputMessage,
			BodyExtractor.Context context,
			ResolvableType elementType,
			Function<HttpMessageReader<T>, S> readerFunction,
			Function<Throwable, S> unsupportedError) {

		MediaType contentType = contentType(inputMessage);
		Supplier<Stream<HttpMessageReader<?>>> messageReaders = context.messageReaders();
		return messageReaders.get()
				.filter(r -> r.canRead(elementType, contentType))
				.findFirst()
				.map(BodyExtractors::<T>cast)
				.map(readerFunction)
				.orElseGet(() -> {
					List<MediaType> supportedMediaTypes = messageReaders.get()
							.flatMap(reader -> reader.getReadableMediaTypes().stream())
							.collect(Collectors.toList());
					UnsupportedMediaTypeException error =
							new UnsupportedMediaTypeException(contentType, supportedMediaTypes);
					return unsupportedError.apply(error);
				});
	}

also happens for another file (BodyInserters.java):

	private static HttpMessageWriter<Resource> resourceHttpMessageWriter(BodyInserter.Context context) {
		return context.messageWriters().get()
				.filter(messageWriter -> messageWriter.canWrite(RESOURCE_TYPE, null))
				.findFirst()
				.map(BodyInserters::<Resource>cast)
				.orElseThrow(() -> new IllegalStateException(
						"Could not find HttpMessageWriter that supports Resources."));
	}

and another file (RouterFunctionsTests.java):

	@Test
	public void toHttpHandler() throws Exception {
		HandlerStrategies strategies = mock(HandlerStrategies.class);
		when(strategies.messageReaders()).thenReturn(
				Stream::<HttpMessageReader<?>>empty);
		when(strategies.messageWriters()).thenReturn(
				Stream::<HttpMessageWriter<?>>empty);
		when(strategies.viewResolvers()).thenReturn(
				Stream::<ViewResolver>empty);

		ServerRequest request = mock(ServerRequest.class);
		ServerResponse response = mock(ServerResponse.class);
		when(response.writeTo(any(ServerWebExchange.class), eq(strategies))).thenReturn(Mono.empty());

		HandlerFunction<ServerResponse> handlerFunction = mock(HandlerFunction.class);
		when(handlerFunction.handle(any(ServerRequest.class))).thenReturn(Mono.just(response));

		RouterFunction<ServerResponse> routerFunction = mock(RouterFunction.class);
		when(routerFunction.route(any(ServerRequest.class))).thenReturn(Mono.just(handlerFunction));

		RequestPredicate requestPredicate = mock(RequestPredicate.class);
		when(requestPredicate.test(request)).thenReturn(false);


		HttpHandler result = RouterFunctions.toHttpHandler(routerFunction, strategies);
		assertNotNull(result);

		MockServerHttpRequest httpRequest =
				new MockServerHttpRequest(HttpMethod.GET, "http://localhost");
		MockServerHttpResponse serverHttpResponse = new MockServerHttpResponse();
		result.handle(httpRequest, serverHttpResponse);
	}

Running PMD through: [CLI]

java -cp * net.sourceforge.pmd.PMD -d "spring-framework\spring-web-reactive\src\main\java\org\springframewor
k\web\reactive\function" -f text -R java-basic -verbose

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4