All files / src/abap/types/basic data_reference_type.ts

91.48% Statements 43/47
91.66% Branches 11/12
85.71% Functions 6/7
91.48% Lines 43/47

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 471x 1x 1x 1x 1x 1x 1x 1x 245x 245x 245x 1x 1x 3x 3x 1x 1x 87x 87x 1x 1x 3x 3x     3x 3x 1x 1x 211x 1x 1x 210x 211x 6x 6x 204x 204x 1x 1x 7x 7x 1x 1x     1x
import {AbstractType} from "./_abstract_type";
import {AnyType} from "./any_type";
import {TableType} from "./table_type";
 
export class DataReference extends AbstractType {
  private readonly type: AbstractType;
 
  public constructor(type: AbstractType, qualifiedName?: string) {
    super({qualifiedName: qualifiedName});
    this.type = type;
  }
 
  public toText(level: number) {
    return "Data REF TO " + this.type.toText(level + 1);
  }
 
  public getType(): AbstractType {
    return this.type;
  }
 
  public toABAP(): string {
    const type = this.type.toABAP();
    if (type.includes(" TABLE OF ")) {
      return ""; // hmm, should this return undefined?
    }
    return "REF TO " + this.type.toABAP();
  }
 
  public isGeneric() {
    if (this.type instanceof AnyType) {
      return true;
    }
    // LIKE REF TO a generic table, eg. a field symbol TYPE STANDARD TABLE
    if (this.type instanceof TableType && this.type.isGeneric()) {
      return true;
    }
    return false;
  }
 
  public containsVoid() {
    return this.type.containsVoid();
  }
 
  public toCDS() {
    return "abap.TODO_REFERENCE";
  }
}