Skip to content
This repository was archived by the owner on Sep 20, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Não duplicar em outros módulos:
- `decode_bytes` — UTF-8 com fallback latin-1
- `strip_line_comments` — remove `//` e `/* */`, rastreia estado de bloco
- `update_brace_depth` — rastreia `{}` ignorando literais string/char
- `has_inline_deprecated` — detecta `@DEPRECATED` inline
- `pragma_deprecated_message` — detecta `#pragma deprecated` e devolve sua mensagem

## Diagnósticos

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
with:
languages: ${{ matrix.language }}
# Neither language needs a compiled build for CodeQL to extract it.
build-mode: none
queries: security-extended

- name: Perform CodeQL analysis
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
with:
category: "/language:${{ matrix.language }}"
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ jobs:
cat release_body.md

- name: Create Release and upload binaries
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
files: dist/*
body_path: release_body.md
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@ jobs:
publish_results: true

- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
with:
sarif_file: results.sarif
69 changes: 68 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,29 @@ caso encontre por favor relate para ajudar a manter a consistência dos dados.

---

## [Unreleased]
## [1.4.0] - 30/08/2026

### Adicionado
- **Comentários de documentação nos hovers, signature help e autocomplete** — o
comentário imediatamente acima de uma declaração passa a ser interpretado, não
apenas repassado como texto cru. Duas convenções são reconhecidas, detectadas
pelo próprio conteúdo:
- **Javadoc** (`@param`, `@return`, `@remarks`/`@note`) — o primeiro parágrafo
vira o resumo, e linhas seguintes a uma tag continuam o texto dela
- **XMLdoc** (`<summary>`, `<param name="">`, `<returns>`, `<remarks>`) — a
convenção herdada do C# que o `omp-stdlib` usa. O HTML inline vira Markdown
(`<b>` → negrito, `<c>` → código, `<br />` → quebra de linha); `<library>`,
`<seealso>` e as âncoras `<a href="#Func">` são metadados do gerador da wiki
do open.mp e não aparecem no hover, onde só ocupariam espaço

Em ambos, cada parâmetro é casado **pelo nome** (o sufixo `[]` é ignorado) e
não pela posição — um comentário pode omitir parâmetros ou listá-los fora de
ordem. O **signature help** passa a mostrar a descrição do parâmetro sob o
cursor; o **autocomplete** mostra só o resumo, e o **hover**, o bloco inteiro
formatado, com as seções traduzidas para o idioma resolvido. Um comentário sem
marcação continua virando a descrição, como antes
- **Tags de documentação no autocomplete** — o trigger `@`, dentro de um
comentário, passa a oferecer `@param`, `@return` e `@remarks` com snippets
- **Diagnósticos e hovers traduzidos para Espanhol, Romeno e Russo** — as tabelas
de mensagens `messages/langs/{es,ro,ru}.rs` existiam como esqueleto (texto ainda
em inglês, copiado de `en.rs`) e agora estão de fato traduzidas: as 75 mensagens
Expand All @@ -24,6 +44,53 @@ caso encontre por favor relate para ajudar a manter a consistência dos dados.
`{}` / `{n}` / `{style}` preservados; termos técnicos do Pawn (`native`,
`forward`, `stock`, `public`, `static`, `enum`) mantidos em inglês

### Alterado
- **`#pragma deprecated` substitui o marcador `@DEPRECATED`** — a depreciação
passa a usar a diretiva do próprio compilador Pawn, em vez do marcador em
comentário que a engine reconhecia antes. A semântica acompanha a do
compilador: a diretiva marca o **próximo símbolo declarado** e não tem forma
inline. O texto que a segue é opcional e, quando presente, é **anexado ao
aviso** PP0007 — é a parte acionável, já que normalmente diz o que usar no
lugar:

```pawn
#pragma deprecated Use BanPlayerFor em vez desta
stock BanTemporario(playerid, seconds) { }
```

Cobertura inalterada: `native`, `stock`, `public`, `forward`, `static`,
`#define`, variáveis globais e `#include` (PP0008), incluindo o pareamento
automático entre `forward` e `public`
- **`@DEPRECATED` deixa de ser reconhecido** — comentários com o marcador antigo
não marcam mais nada. Quem o usava precisa trocar por `#pragma deprecated`
(ver acima). O completion do `@` que existia só para inseri-lo deu lugar às
tags de documentação
- **Dependências (Rust)** — `tokio` 1.52.3 → 1.53.1, `regex` 1.12.4 → 1.13.1,
`serde` 1.0.228 → 1.0.229, `serde_json` 1.0.150 → 1.0.151 e `futures` 0.3.32 →
0.3.34, além das transitivas do `Cargo.lock`
- **CI — GitHub Actions atualizadas** (pinadas por SHA): `github/codeql-action`
4.36.2 → 4.37.9, `actions/checkout` 4.2.2 → 7.0.1, `actions/upload-artifact`
6.0.0 → 7.0.1, `actions/download-artifact` 7.0.0 → 8.0.1,
`actions/upload-pages-artifact` 3.0.1 → 5.0.0, `Swatinem/rust-cache` 2.9.1 →
2.9.2, `ossf/scorecard-action` 2.4.3 → 2.4.4 e `softprops/action-gh-release`
3.0.1 → 3.0.3
- **Docs (CI)** — `mkdocs-material` para 9.7.7 e `pymdown-extensions` 10.21.3 →
11.0.2 (pinados por hash)
- **Dependabot — um PR por ecossistema** — as atualizações passam a ser agrupadas
por ecossistema (cargo, GitHub Actions, pip) em vez de abrir um PR por
dependência, reduzindo o ruído de manutenção

### Corrigido
- **CodeQL: análise ausente em PRs de docs e dependências** — o repositório usava
o *default setup* do CodeQL, que só analisa um pull request quando ele toca
arquivos das linguagens configuradas. Um PR que mexia apenas em documentação ou
em manifestos de dependência não gerava análise alguma, enquanto `master`
continuava com uma por linguagem — a regra de proteção `code_scanning` não
conseguia comparar os dois lados e reportava *"configurations not found"*,
travando o merge. Substituído pelo *advanced setup* (`.github/workflows/codeql.yml`),
sem filtro de caminho: as duas configurações (`/language:actions` e
`/language:rust`) passam a existir em todo pull request

## [1.3.0] - 04/07/2026

### Adicionado
Expand Down
11 changes: 6 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ src/
config.rs ← EngineConfig recebida via initializationOptions
parser/
lexer.rs ← decode_bytes, strip_line_comments, update_brace_depth,
has_inline_deprecated — utilitários de texto
pragma_deprecated_message — utilitários de texto
symbols.rs ← parser principal: extrai Symbol, IncludeDirective, macros
types.rs ← ParsedFile, Symbol, SymbolKind, IncludeDirective, Param
mod.rs ← re-exports públicos
Expand All @@ -41,7 +41,7 @@ src/
semantic.rs ← PP0002, PP0003, PP0004 — erros estruturais
unused.rs ← PP0005, PP0006, PP0011, PP0012 — código morto
hints.rs ← PP0009 — parâmetros não utilizados
deprecated.rs ← PP0007, PP0008 — @DEPRECATED
deprecated.rs ← PP0007, PP0008 — #pragma deprecated
undefined.rs ← PP0010 — funções não declaradas
mod.rs ← re-exports + função analyze() que orquestra tudo
intellisense/
Expand Down Expand Up @@ -81,7 +81,7 @@ Armazenado como `Arc<ParsedFile>` no cache. Contém:
- `symbols: Vec<Symbol>` — todas as declarações
- `includes: Vec<IncludeDirective>` — todas as diretivas `#include` / `#tryinclude`
- `macro_names: Vec<String>` — nomes de `#define`
- `deprecated_macros: Vec<String>` — macros marcadas com `@DEPRECATED`
- `deprecated_macros: Vec<String>` — macros marcadas com `#pragma deprecated`
- `func_macro_prefixes: Vec<String>` — prefixos como `CMD`, `BPR`
- `namespace_aliases: HashMap<String, String>`

Expand All @@ -101,7 +101,8 @@ pub struct ResolvedIncludes {
- `StaticConst` — constante: membro de enum, `stock const`, `static const`
- `Enum` — nome do enum declarado (`enum NomeDoEnum { ... }`)
- `Const` — constante declarada com `const`
- `deprecated: bool` — marcado com `@DEPRECATED`
- `deprecated: bool` — marcado com `#pragma deprecated`
- `deprecated_message: Option<String>` — texto da diretiva, anexado ao aviso
- `doc: Option<String>` — comentário de documentação acima da declaração
- `line: u32`, `col: u32` — posição 0-based em bytes UTF-8

Expand Down Expand Up @@ -171,7 +172,7 @@ Funções utilitárias canônicas — **não duplicar em outros módulos**:
| `decode_bytes(bytes)` | UTF-8 com fallback latin-1 |
| `strip_line_comments(line, in_block)` | Remove `//` e `/* */`, rastreia estado de bloco |
| `update_brace_depth(ch, depth, in_str, in_char)` | Rastreia profundidade de `{}` ignorando literais |
| `has_inline_deprecated(line)` | Detecta `@DEPRECATED` inline na mesma linha |
| `pragma_deprecated_message(line)` | Detecta `#pragma deprecated` e devolve sua mensagem |

---

Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ docs/ ← documentação detalhada (não incluída nos releases)
- **Nunca interpolar input não escapado em `Regex::new`**.
- **`cargo clippy -- -D warnings` deve passar sem erros** — obrigatório.
- **Novos diagnósticos sempre com constante em `analyzer/codes.rs`**.
- **Funções utilitárias de texto em `parser/lexer.rs`** — não duplicar `decode_bytes`, `strip_line_comments`, `update_brace_depth` ou `has_inline_deprecated` em outros módulos.
- **Funções utilitárias de texto em `parser/lexer.rs`** — não duplicar `decode_bytes`, `strip_line_comments`, `update_brace_depth` ou `pragma_deprecated_message` em outros módulos.

## Adicionando um novo diagnóstico

Expand Down
Loading