Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 570d0ac

Browse files
author
Akos Kitta
committed
ATL-66: Added compiler warnings.
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
1 parent 49b7724 commit 570d0ac

File tree

6 files changed

+57
-25
lines changed

6 files changed

+57
-25
lines changed

‎arduino-ide-extension/src/browser/arduino-preferences.ts‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
import { interfaces } from 'inversify';
2-
import {
3-
createPreferenceProxy,
4-
PreferenceProxy,
5-
PreferenceService,
6-
PreferenceContribution,
7-
PreferenceSchema
8-
} from '@theia/core/lib/browser/preferences';
2+
import { createPreferenceProxy, PreferenceProxy, PreferenceService, PreferenceContribution, PreferenceSchema } from '@theia/core/lib/browser/preferences';
3+
import { CompilerWarningLiterals, CompilerWarnings } from '../common/protocol';
94

105
export const ArduinoConfigSchema: PreferenceSchema = {
116
'type': 'object',
@@ -20,6 +15,11 @@ export const ArduinoConfigSchema: PreferenceSchema = {
2015
'description': 'True for verbose compile output. False by default',
2116
'default': false
2217
},
18+
'arduino.compile.warnings': {
19+
'enum': [...CompilerWarningLiterals],
20+
'description': "Tells gcc which warning level to use. It's 'None' by default",
21+
'default': 'None'
22+
},
2323
'arduino.upload.verbose': {
2424
'type': 'boolean',
2525
'description': 'True for verbose upload output. False by default.',
@@ -50,6 +50,7 @@ export const ArduinoConfigSchema: PreferenceSchema = {
5050
export interface ArduinoConfiguration {
5151
'arduino.language.log': boolean;
5252
'arduino.compile.verbose': boolean;
53+
'arduino.compile.warnings': CompilerWarnings;
5354
'arduino.upload.verbose': boolean;
5455
'arduino.upload.verify': boolean;
5556
'arduino.window.autoScale': boolean;

‎arduino-ide-extension/src/browser/contributions/verify-sketch.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,16 @@ export class VerifySketch extends SketchContribution {
8080
this.sourceOverride()
8181
]);
8282
const verbose = this.preferences.get('arduino.compile.verbose');
83+
const compilerWarnings = this.preferences.get('arduino.compile.warnings');
8384
this.outputChannelManager.getChannel('Arduino').clear();
8485
await this.coreService.compile({
8586
sketchUri: sketch.uri,
8687
fqbn,
8788
optimizeForDebug: this.editorMode.compileForDebug,
8889
verbose,
8990
exportBinaries,
90-
sourceOverride
91+
sourceOverride,
92+
compilerWarnings
9193
});
9294
this.messageService.info('Done compiling.', { timeout: 1000 });
9395
} catch (e) {

‎arduino-ide-extension/src/browser/settings.tsx‎

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { DisposableCollection } from '@theia/core/lib/common/disposable';
1818
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
1919
import { AbstractDialog, DialogProps, PreferenceService, PreferenceScope, DialogError, ReactWidget } from '@theia/core/lib/browser';
2020
import { Index } from '../common/types';
21-
import { ConfigService, FileSystemExt, Network, ProxySettings } from '../common/protocol';
21+
import { CompilerWarnings,CompilerWarningLiterals,ConfigService, FileSystemExt, Network, ProxySettings } from '../common/protocol';
2222

2323
export interface Settings extends Index {
2424
editorFontSize: number; // `editor.fontSize`
@@ -29,6 +29,7 @@ export interface Settings extends Index {
2929
interfaceScale: number; // `arduino.window.zoomLevel` https://github.com/eclipse-theia/theia/issues/8751
3030
checkForUpdates?: boolean; // `arduino.ide.autoUpdate`
3131
verboseOnCompile: boolean; // `arduino.compile.verbose`
32+
compilerWarnings: CompilerWarnings; // `arduino.compile.warnings`
3233
verboseOnUpload: boolean; // `arduino.upload.verbose`
3334
verifyAfterUpload: boolean; // `arduino.upload.verify`
3435
enableLsLogs: boolean; // `arduino.language.log`
@@ -87,6 +88,7 @@ export class SettingsService {
8788
interfaceScale,
8889
// checkForUpdates,
8990
verboseOnCompile,
91+
compilerWarnings,
9092
verboseOnUpload,
9193
verifyAfterUpload,
9294
enableLsLogs,
@@ -99,6 +101,7 @@ export class SettingsService {
99101
this.preferenceService.get<number>('arduino.window.zoomLevel', 0),
100102
// this.preferenceService.get<string>('arduino.ide.autoUpdate', true),
101103
this.preferenceService.get<boolean>('arduino.compile.verbose', true),
104+
this.preferenceService.get<any>('arduino.compile.warnings', 'None'),
102105
this.preferenceService.get<boolean>('arduino.upload.verbose', true),
103106
this.preferenceService.get<boolean>('arduino.upload.verify', true),
104107
this.preferenceService.get<boolean>('arduino.language.log', true),
@@ -114,6 +117,7 @@ export class SettingsService {
114117
interfaceScale,
115118
// checkForUpdates,
116119
verboseOnCompile,
120+
compilerWarnings,
117121
verboseOnUpload,
118122
verifyAfterUpload,
119123
enableLsLogs,
@@ -175,6 +179,7 @@ export class SettingsService {
175179
interfaceScale,
176180
// checkForUpdates,
177181
verboseOnCompile,
182+
compilerWarnings,
178183
verboseOnUpload,
179184
verifyAfterUpload,
180185
enableLsLogs,
@@ -198,6 +203,7 @@ export class SettingsService {
198203
this.preferenceService.set('arduino.window.zoomLevel', interfaceScale, PreferenceScope.User),
199204
// this.preferenceService.set('arduino.ide.autoUpdate', checkForUpdates, PreferenceScope.User),
200205
this.preferenceService.set('arduino.compile.verbose', verboseOnCompile, PreferenceScope.User),
206+
this.preferenceService.set('arduino.compile.warnings', compilerWarnings, PreferenceScope.User),
201207
this.preferenceService.set('arduino.upload.verbose', verboseOnUpload, PreferenceScope.User),
202208
this.preferenceService.set('arduino.upload.verify', verifyAfterUpload, PreferenceScope.User),
203209
this.preferenceService.set('arduino.language.log', enableLsLogs, PreferenceScope.User),
@@ -267,6 +273,7 @@ export class SettingsComponent extends React.Component<SettingsComponent.Props,
267273
<div className='flex-line'>Interface scale:</div>
268274
<div className='flex-line'>Theme:</div>
269275
<div className='flex-line'>Show verbose output during:</div>
276+
<div className='flex-line'>Compiler warnings:</div>
270277
</div>
271278
<div className='column'>
272279
<div className='flex-line'>
@@ -321,6 +328,14 @@ export class SettingsComponent extends React.Component<SettingsComponent.Props,
321328
upload
322329
</label>
323330
</div>
331+
<div className='flex-line'>
332+
<select
333+
className='theia-select'
334+
value={this.state.compilerWarnings}
335+
onChange={this.compilerWarningsDidChange}>
336+
{CompilerWarningLiterals.map(value => <option key={value} value={value}>{value}</option>)}
337+
</select>
338+
</div>
324339
</div>
325340
</div>
326341
<label className='flex-line'>
@@ -544,6 +559,14 @@ export class SettingsComponent extends React.Component<SettingsComponent.Props,
544559
}
545560
};
546561

562+
protected compilerWarningsDidChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
563+
const { selectedIndex } = event.target.options;
564+
const compilerWarnings = CompilerWarningLiterals[selectedIndex];
565+
if (compilerWarnings) {
566+
this.setState({ compilerWarnings });
567+
}
568+
};
569+
547570
protected verboseOnCompileDidChange = (event: React.ChangeEvent<HTMLInputElement>) => {
548571
this.setState({ verboseOnCompile: event.target.checked });
549572
};

‎arduino-ide-extension/src/browser/style/settings-dialog.css‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
.arduino-settings-dialog .content {
66
padding: 5px;
7-
height: 250px;
7+
height: 270px;
88
}
99

1010
.arduino-settings-dialog .flex-line {

‎arduino-ide-extension/src/common/protocol/core-service.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import { Programmer } from './boards-service';
22

3+
export const CompilerWarningLiterals = ['None', 'Default', 'More', 'All'] as const;
4+
export type CompilerWarnings = typeof CompilerWarningLiterals[number];
5+
36
export const CoreServicePath = '/services/core-service';
47
export const CoreService = Symbol('CoreService');
58
export interface CoreService {
6-
compile(options: CoreService.Compile.Options & Readonly<{ exportBinaries?: boolean }>): Promise<void>;
9+
compile(options: CoreService.Compile.Options & Readonly<{ exportBinaries?: boolean,compilerWarnings?: CompilerWarnings }>): Promise<void>;
710
upload(options: CoreService.Upload.Options): Promise<void>;
811
uploadUsingProgrammer(options: CoreService.Upload.Options): Promise<void>;
912
burnBootloader(options: CoreService.Bootloader.Options): Promise<void>;

‎arduino-ide-extension/src/node/core-service-impl.ts‎

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { FileUri } from '@theia/core/lib/node/file-uri';
22
import { inject, injectable } from 'inversify';
33
import { relative } from 'path';
44
import * as jspb from 'google-protobuf';
5-
import { CoreService } from '../common/protocol/core-service';
5+
import { CompilerWarnings,CoreService } from '../common/protocol/core-service';
66
import { CompileReq, CompileResp } from './cli-protocol/commands/compile_pb';
77
import { CoreClientAware } from './core-client-provider';
88
import { UploadReq, UploadResp, BurnBootloaderReq, BurnBootloaderResp, UploadUsingProgrammerReq, UploadUsingProgrammerResp } from './cli-protocol/commands/upload_pb';
@@ -22,31 +22,34 @@ export class CoreServiceImpl extends CoreClientAware implements CoreService {
2222
@inject(NotificationServiceServer)
2323
protected readonly notificationService: NotificationServiceServer;
2424

25-
async compile(options: CoreService.Compile.Options & { exportBinaries?: boolean }): Promise<void> {
26-
const { sketchUri, fqbn } = options;
25+
async compile(options: CoreService.Compile.Options & { exportBinaries?: boolean,compilerWarnings?: CompilerWarnings }): Promise<void> {
26+
const { sketchUri, fqbn, compilerWarnings } = options;
2727
const sketchPath = FileUri.fsPath(sketchUri);
2828

2929
const coreClient = await this.coreClient();
3030
const { client, instance } = coreClient;
3131

32-
const compilerReq = new CompileReq();
33-
compilerReq.setInstance(instance);
34-
compilerReq.setSketchpath(sketchPath);
32+
const compileReq = new CompileReq();
33+
compileReq.setInstance(instance);
34+
compileReq.setSketchpath(sketchPath);
3535
if (fqbn) {
36-
compilerReq.setFqbn(fqbn);
36+
compileReq.setFqbn(fqbn);
3737
}
38-
compilerReq.setOptimizefordebug(options.optimizeForDebug);
39-
compilerReq.setPreprocess(false);
40-
compilerReq.setVerbose(options.verbose);
41-
compilerReq.setQuiet(false);
38+
if (compilerWarnings) {
39+
compileReq.setWarnings(compilerWarnings.toLowerCase());
40+
}
41+
compileReq.setOptimizefordebug(options.optimizeForDebug);
42+
compileReq.setPreprocess(false);
43+
compileReq.setVerbose(options.verbose);
44+
compileReq.setQuiet(false);
4245
if (typeof options.exportBinaries === 'boolean') {
4346
const exportBinaries = new BoolValue();
4447
exportBinaries.setValue(options.exportBinaries);
45-
compilerReq.setExportBinaries(exportBinaries);
48+
compileReq.setExportBinaries(exportBinaries);
4649
}
47-
this.mergeSourceOverrides(compilerReq, options);
50+
this.mergeSourceOverrides(compileReq, options);
4851

49-
const result = client.compile(compilerReq);
52+
const result = client.compile(compileReq);
5053
try {
5154
await new Promise<void>((resolve, reject) => {
5255
result.on('data', (cr: CompileResp) => {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /