KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Najczęstsze błędy typów
KretS nie ma konwersji niejawnych. `1 + 2.0` daje `KCS-KRS-0320`, `let x = null` bez typu daje `KCS-KRS-0307`. Folder `fixed/` pokazuje poprawki: jawne `toFloat(1)` i typ `String?`.
Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.
Kanoniczne pliki projektu
module Main
fn Start() -> String {
let sum = toFloat(1) + 2.0
let nothing: String? = null
return toString(sum) + " / " + orElse(nothing, "brak")
}
fn Shutdown() {
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.let sum = toFloat(1) + 2.0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.let nothing: String? = nullWiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.return toString(sum) + " / " + orElse(nothing, "brak")Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Wynik i typowy błąd
Dwa pierwsze polecenia kończą się kodem 1 z diagnostyką w pliku `Script/Main.krs` (wiersz i kolumna). Wersja poprawiona zwraca „3.0 / brak” (`Float64` zawsze z kropką).
Oczekiwanie, że liczba całkowita „sama” zamieni się na zmiennoprzecinkową. Zawsze używaj `toFloat`, `toInt`, `toString`.
Wymagania wersji i procedura lokalna
- sdk
- 1.0.0-rc.3+kret.local.3
- sdkInfoReports
- 1.0.0-rc.3
- core
- 1.0.0-test.6.11-draft.1
- os
- Windows 11 x64
- dotnet
- .NET 10 runtime
Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.
- mixed-numbers
kret check mixed-numbers --jsonKatalog: project · Oczekiwany kod wyjścia: 1 - untyped-null
kret check untyped-null --jsonKatalog: project · Oczekiwany kod wyjścia: 1 - fixed-run
kret run fixed --policy fixed/host-policy.json --data {DATA}Katalog: project · Oczekiwany kod wyjścia: 0
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETS-B02-CommonTypeErrors
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:38Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.
### 1. mixed-numbers (exit 1, PASS)
> kret check mixed-numbers --json
{
"format": "kret-diagnostics/1",
"project": "<project>\\mixed-numbers",
"succeeded": false,
"plugin": {
"id": "LOCAL-KPL-KSB2TYPE",
"name": "CommonTypeErrors",
"version": "1.0.0",
"profile": "standard",
"database": false
},
"permissions": {
"required": [],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": [
{
"file": "<project>\\mixed-numbers\\Script\\Main.krs",
"line": 4,
"column": 12,
"endLine": 4,
"endColumn": 19,
"severity": "error",
"code": "KCS-KRS-0320",
"message": "operator wymaga tych samych typ\u00F3w po obu stronach (Int64 i Float64) \u2014 u\u017Cyj jawnej konwersji, np. toFloat(x)"
}
]
}
### 2. untyped-null (exit 1, PASS)
> kret check untyped-null --json
{
"format": "kret-diagnostics/1",
"project": "<project>\\untyped-null",
"succeeded": false,
"plugin": {
"id": "LOCAL-KPL-KSB2TYPE",
"name": "CommonTypeErrors",
"version": "1.0.0",
"profile": "standard",
"database": false
},
"permissions": {
"required": [],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": [
{
"file": "<project>\\untyped-null\\Script\\Main.krs",
"line": 4,
"column": 13,
"endLine": 4,
"endColumn": 17,
"severity": "error",
"code": "KCS-KRS-0307",
"message": "null wymaga podania typu zmiennej, np. \u201Elet x: Int64? = null\u201D"
}
]
}
### 3. fixed-run (exit 0, PASS)
> kret run fixed --policy fixed/host-policy.json --data {DATA}
{
"broker": {
"pid": 4372,
"startupMs": 39.762,
"pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
"allowProvisionalRisk": false,
"memoryIdle": {
"managedBytes": 1193272,
"allocatedBytes": 1190632,
"workingSetBytes": 32464896,
"privateBytes": 10031104,
"peakWorkingSetBytes": 32464896,
"cpuMs": 78.125
}
},
"brokerWithPlugins": {
"memory": {
"managedBytes": 1522448,
"allocatedBytes": 1519376,
"workingSetBytes": 38707200,
"privateBytes": 13770752,
"peakWorkingSetBytes": 38739968,
"cpuMs": 125
}
},
"plugins": [
{
"package": "<project>\\fixed\\Build",
"admitted": true,
"startMs": 140.6137,
"subject": "LOCAL-KPL-KSB2TYPE",
"instance": "01a19725-cac3-73f5-8c40-961e7b135ffd",
"pid": 50060,
"jobObject": true,
"isolation": {
"level": "Restricted",
"restrictedToken": true,
"lowIntegrity": true,
"appContainer": false
},
"limits": {
"profile": "standard",
"scriptMemoryBytes": 67108864,
"processMemoryBytes": 201326592,
"cpuPercent": 25,
"maxInstructions": 50000000,
"clamped": []
},
"calls": [
{
"operation": "start",
"ok": true,
"status": "Completed",
"type": "String",
"value": "3.0 / brak",
"brokerMs": 12.0775,
"vmMs": 5.8529,
"instructions": 16,
"hostCalls": 0,
"pluginReportedMemory": {
"managedBytes": 764056,
"allocatedBytes": 761920,
"workingSetBytes": 32104448,
"privateBytes": 11173888,
"peakWorkingSetBytes": 32432128,
"cpuMs": 125
}
},
{
"operation": "shutdown",
"ok": true,
"status": "Completed",
"type": "Unit",
"value": null,
"brokerMs": 0.8429,
"vmMs": 0.0051,
"instructions": 1,
"hostCalls": 0,
"pluginReportedMemory": {
"managedBytes": 772280,
"allocatedBytes": 770120,
"workingSetBytes": 32231424,
"privateBytes": 11190272,
"peakWorkingSetBytes": 32432128,
"cpuMs": 125
}
}
],
"processMemoryMeasuredByBroker": {
"workingSetBytes": 32219136,
"privateBytes": 11190272,
"peakWorkingSetBytes": 32432128,
"cpuMs": 125
},
"summary": {
"exitCode": 0,
"killed": false,
"hostCalls": 0,
"denials": 0,
"peakCommitBytes": 11976704,
"log": []
}
}
],
"brokerAfterClose": {
"memory": {
"managedBytes": 577816,
"allocatedBytes": 1519376,
"workingSetBytes": 39739392,
"privateBytes": 14372864,
"peakWorkingSetBytes": 39739392,
"cpuMs": 140.625
}
},
"audit": {
"entries": 10,
"denials": 0,
"grantsIssued": 0,
"denied": []
},
"exitCode": 0
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETS-B02-CommonTypeErrorsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:38Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. mixed-numbers (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check mixed-numbers --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>\\mixed-numbers",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-KSB2TYPE",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."file": "<project>\\mixed-numbers\\Script\\Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 12,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 19,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KRS-0320",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "operator wymaga tych samych typ\u00F3w po obu stronach (Int64 i Float64) \u2014 u\u017Cyj jawnej konwersji, np. toFloat(x)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 2. untyped-null (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check untyped-null --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>\\untyped-null",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-KSB2TYPE",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."file": "<project>\\untyped-null\\Script\\Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 13,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 17,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KRS-0307",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "null wymaga podania typu zmiennej, np. \u201Elet x: Int64? = null\u201D"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 3. fixed-run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret run fixed --policy fixed/host-policy.json --data {DATA}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 4372,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startupMs": 39.762,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allowProvisionalRisk": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1193272,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1190632,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32464896,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10031104,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32464896,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1522448,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1519376,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 38707200,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 13770752,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 38739968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."package": "<project>\\fixed\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startMs": 140.6137,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."subject": "LOCAL-KPL-KSB2TYPE",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instance": "01a19725-cac3-73f5-8c40-961e7b135ffd",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 50060,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."level": "Restricted",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."restrictedToken": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lowIntegrity": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."appContainer": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."scriptMemoryBytes": 67108864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuPercent": 25,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxInstructions": 50000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": "3.0 / brak",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 12.0775,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 5.8529,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 16,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 764056,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 761920,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32104448,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11173888,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32432128,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 0.8429,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 0.0051,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 772280,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 770120,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32231424,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11190272,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32432128,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32219136,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11190272,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32432128,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakCommitBytes": 11976704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."log": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 577816,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1519376,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 39739392,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 14372864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 39739392,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 140.625Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."entries": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."grantsIssued": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów
{
"format": "kretos-web-playground-diagnostics/1",
"exampleId": "KRETS-B02-CommonTypeErrors",
"sdk": "1.0.0-rc.3+kret.local.3",
"origin": "PRECOMPUTED",
"diagnostics": [
{
"id": "diag.KRETS-B02-CommonTypeErrors.1.1",
"exampleId": "KRETS-B02-CommonTypeErrors",
"step": 1,
"stepName": "mixed-numbers",
"command": "kret check mixed-numbers --json",
"exitCode": 1,
"file": "mixed-numbers/Script/Main.krs",
"line": 4,
"column": 12,
"endLine": 4,
"endColumn": 19,
"severity": "error",
"code": "KCS-KRS-0320",
"message": "operator wymaga tych samych typów po obu stronach (Int64 i Float64) — użyj jawnej konwersji, np. toFloat(x)",
"origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"
},
{
"id": "diag.KRETS-B02-CommonTypeErrors.2.2",
"exampleId": "KRETS-B02-CommonTypeErrors",
"step": 2,
"stepName": "untyped-null",
"command": "kret check untyped-null --json",
"exitCode": 1,
"file": "untyped-null/Script/Main.krs",
"line": 4,
"column": 13,
"endLine": 4,
"endColumn": 17,
"severity": "error",
"code": "KCS-KRS-0307",
"message": "null wymaga podania typu zmiennej, np. „let x: Int64? = null”",
"origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"
}
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kretos-web-playground-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETS-B02-CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."sdk": "1.0.0-rc.3+kret.local.3",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "diag.KRETS-B02-CommonTypeErrors.1.1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETS-B02-CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."step": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."stepName": "mixed-numbers",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."command": "kret check mixed-numbers --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."file": "mixed-numbers/Script/Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 12,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 19,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KRS-0320",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "operator wymaga tych samych typów po obu stronach (Int64 i Float64) — użyj jawnej konwersji, np. toFloat(x)",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "diag.KRETS-B02-CommonTypeErrors.2.2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETS-B02-CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."step": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."stepName": "untyped-null",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."command": "kret check untyped-null --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."file": "untyped-null/Script/Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 13,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 17,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KRS-0307",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "null wymaga podania typu zmiennej, np. „let x: Int64? = null”",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Pochodzenie i integralność
KRET_LANGUAGE_KRETS.zip:KretS/Examples/BASIC_CommonTypeErrors/example.json
02_PLAYGROUND/EXAMPLES/KRETS-B02-CommonTypeErrors.json
SHA-256 B145CD747845D1BC5D484C53B607FF13DD8A4797E5E1C78FE3EDEA275FCB31F0Materiały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KRETS-B02-CommonTypeErrors — Najczęstsze błędy typów
KRETS-B02-CommonTypeErrors — Najczęstsze błędy typów
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretS |
| Poziom | BASIC |
| Klasyfikacja | VALIDATION_ONLY — Tylko walidacja (bez wykonania) |
| Playground | LOCAL_VALIDATE — lokalnie: walidacja (kret check, lokalny walidator Playground) |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt |
Co pokazuje
KretS nie ma konwersji niejawnych. 1 + 2.0 daje KCS-KRS-0320, let x = null bez typu daje KCS-KRS-0307. Folder fixed/ pokazuje poprawki: jawne toFloat(1) i typ String?.
Pliki
| Plik |
|---|
fixed/Script/Main.krs |
fixed/host-policy.json |
fixed/plugin.kretl |
mixed-numbers/Script/Main.krs |
mixed-numbers/plugin.kretl |
untyped-null/Script/Main.krs |
untyped-null/plugin.kretl |
Jak uruchomić
Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.
kret check mixed-numbers --json—Int + Float→KCS-KRS-0320(oczekiwany błąd)kret check untyped-null --json—nullbez typu →KCS-KRS-0307(oczekiwany błąd)kret run fixed --policy fixed/host-policy.json --data {DATA}— wersja poprawiona działa
Oczekiwany wynik
Dwa pierwsze polecenia kończą się kodem 1 z diagnostyką w pliku Script/Main.krs (wiersz i kolumna). Wersja poprawiona zwraca „3.0 / brak” (Float64 zawsze z kropką).
Najczęstszy błąd
Oczekiwanie, że liczba całkowita „sama” zamieni się na zmiennoprzecinkową. Zawsze używaj toFloat, toInt, toString.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →