ArkCompiler Subsystem Changelog

cl.ArkCompiler.1 ArkTS Syntax Validator Change

Compared with OpenHarmony SDK 4.0.10.8, the syntax validator in OpenHarmony SDK 4.0.10.10/11 is able to detect violations of the following rules and reports corresponding errors.

NOTE This change is only an enhancement of the syntax validator capability. The syntax rules below are not new rules themselves.

Rule arkts-no-classes-as-obj

This rule checks usage of an imported class as a variable. Below is an example:

// module1.ets
export class C {}

// module2.ets
import { C } from './module1'

let c = C  // error: arkts-no-class-as-obj

Change Impact

Code adaptation is required. Otherwise, the compilation fails.

Key API/Component Changes

The ArkTS syntax validator is enhanced.

Adaptation Guide

Modify code files that do not comply with the ArkTS syntax rules. For details about the rules and modification suggestions, see Adaptation Cases.

Rule arkts-strict-typing

This rule checks assignment of values of the X | undefined type to an entity of the X type in the .ets file. Below is an example:

// module.ets
function foo(a: number) {
 return a + 1
}

function bar(x: number): number | undefined {
 return x > 0 ? x : undefined
}

foo(bar(-123))  // error: arkts-strict-typing

This rule checks assignment of values of the X | null type to an entity of the X type in the .ets file. Below is an example:

// module.ets
function foo(a: number) {
 return a + 1
}

function bar(x: number): number | null {
 return x > 0 ? x : null
}

foo(bar(-123))  // error: arkts-strict-typing

Change Impact

Code adaptation is required. Otherwise, the compilation fails.

Key API/Component Changes

The ArkTS syntax validator is enhanced.

Adaptation Guide

Modify code files that do not comply with the ArkTS syntax rules. For details about the rules and modification suggestions, see Adaptation Cases.

Rule arkts-no-ts-deps

This rule checks imports of entities from an .ets file to a .ts file. Below is an example:

// lib.ts
export class C {}


// module.ets
import { C } from './lib'

Change Impact

Code adaptation is required. Otherwise, the compilation fails.

Key API/Component Changes

The ArkTS syntax validator is enhanced.

Adaptation Guide

Modify code files that do not comply with the ArkTS syntax rules. For details about the rules and modification suggestions, see Adaptation Cases.

cl.ArkCompiler.2 ArkTS Syntax Rule Change

Added ArkTS syntax rule levels: error and warning.

  • Error: constraint with which compliance is mandatory. An error will result in a compilation failure.
  • Warning: constraint with which compliance is recommended. A warning does not affect the compilation process, but may cause compilation failures in the future.

Since 4.0.10.11, the levels of rules arkts-no-definite-assignment and arkts-no-decorators-except-arkui are degraded to warning. If ESObject is used in code, a warning is reported.

In addition, the ArkTS syntax supports the following features:

tuple, keyof, for-of, use of expansion characters in array scenarios, re-export, module name suffixed with .js, readonly, Encode, Decode, ParesHexOctet, Array.isArray, Object.entries, Object.keys, Object.values, Object.hasOwn, Object.hasOwnPropertyNames, Reflect.get, Reflect.set, Reflect.has, Reflect.ownKeys, Reflect.set, Symbol.iterator, and Required and Readonly in Utility types.

Change Impact

There is no compatibility impact. No code adaptation is required.