github / github/codeql

Java: `MemberRefExpr.getReferencedCallable()` does not work for creation of arrays

Aberta
#5,707 0 comentários 0 reações 0 responsáveis Ver no GitHub
enhancement Java
Linguagem predominante
CodeQL
Estrelas
10.1k
Forks
2.1k
Merge médio
2d 15h
PRs com merge (30d)
141

Descrição

### Description
When a Method Reference Expression performs creation of an array (e.g. `String[]::new`), `MemberRefExpr.getReferencedCallable()` has no result.

This is technically correct since there exists no 'array constructor', however it might make working with `MemberRefExpr` more cumbersome. I created this issue mainly to discuss how this can be solved, or how the current situation can be improved. A few solutions might be:
- Model a 'dummy' array constructor so `getReferencedCallable()` has a result; however, make sure that no other element by accident has this dummy constructor as result (e.g. array creation expression)
- Adjust the documentation for `getReferencedCallable()` and create a new predicate `getCreatedArrayType()` which has in these cases the result

### Example
CodeQL query:
```ql
import java

from MemberRefExpr m
where not exists(m.getReferencedCallable())
select m
```
[Query Console link](https://lgtm.com/query/8386794043699946607/)

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.